home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Gold Collection / Software Vault - The Gold Collection (American Databankers) (1993).ISO / cdr36 / mapl0301.zip / MBS40301.MRG < prev    next >
Text File  |  1993-04-13  |  91KB  |  2,178 lines

  1. * ------------[ BLED merge (c) Ken Goosens ]-------------
  2. * Merge this against E:\RBBS\STOCK\RBBSSUB4.BAS to produce E:\RBBS\CHAT\RBBSSUB4.BAS
  3. * E:\RBBS\STOCK\RBBSSUB4.BAS:  Date 6-20-1992  Size 120885 bytes
  4. * ------------[ Created 03-01-1993 19:15:18 ]------------
  5. * REPLACING old line(s) by new
  6. ' $linesize:132
  7. ' $title: 'RBBSSUB4.BAS 17.4, Copyright 1986 - 92 by D. Thomas Mack'
  8. '  Copyright 1992 by D. Thomas Mack, all rights reserved.
  9. '  Name ...............: RBBSSUB4.BAS
  10. '  First Released .....: June 21, 1992
  11. '  Subsequent Releases.: 
  12. '  Copyright ..........: 1986 - 1992
  13. '  Purpose.............: The Remote Bulletin Board System for the IBM PC,
  14. '     RBBS-PC.BAS utilizes a lot of common subroutines.  Those that do not
  15. '     require error trapping are incorporated within RBBSSUB 2-5 as
  16. '     separately callable subroutines in order to free up as much
  17. '     code as possible within the 64K code segment used by RBBS-PC.BAS.
  18. '  Parameters..........: Most parameters are passed via a COMMON statement.
  19. '
  20. ' Subroutine  Line               Function of Subroutine
  21. '   Name     Number
  22. '  AnyBut         59760  Determine where a "word" begins
  23. '  AskUsers       64003  Ask users questions based on a script and save answers
  24. '  AskMore        59858  Check whether screen full
  25. '  AutoPage       60300  Check whether to notify sysop caller is on
  26. ' BadFileChar     59800  Check file name for bad character
  27. '  Bracket        59960  Puts strings around a substring
  28. '  BufFile        58400  Write a file to the user quickly
  29. '  BufString      58300  Write a string with imbedded CR/LF to the user quickly
  30. '  CheckColor     59930  Highlighting based on search string
  31. '  CmndToggle     64635  Processes user command to T)oggle preferences
  32. * ------[ first line different ]------
  33. '  CmndSysopXfer  64640  Sysop function to change Xfer count
  34. '  ColorDir       59920  Adds colorization to FMS directory entry
  35. '  ColorPrompt    59940  Colorizes prompts
  36. '  CompDate       59880+ Produces a computational data from YY, MM, DD
  37. '  ConfMail       59850  Check conference mail waiting
  38. '  ConvertDir     58950  Checks for U & A (shorthand) and converts appropriately
  39. '  PackDate       59201  Compress date in string format to 2 characters
  40. '  EofComm        60000  Determine whether any chars in comm port buffer
  41. '  ExpireDate     59890  Calculate registration expiration date
  42. '  FakeXRpt       62650  Write out file transfer report for protocols that don't
  43. '  FindEnd        58770  Find where a "word" ends
  44. '  FindFile       58790  Determine whether a file exists without opening it
  45. '  FindLast       58600  Find last occurence of a string
  46. '  FMS            58200  Search the upload management system for entries
  47. '  GetAll         59780  Get list of all directories to display
  48. '  GetDirs        58895  Prompts for directories for file list/new/search cmds
  49. '  GetMsgAttr     62530  Restore attributes of original message
  50. '  GetYMD         59204  Pulls YY, MM, or DD from a 2 byte stored date
  51. '  GlobalSrchRepl 60100  Global search and replace
  52. '  LogPDown       59400  Records download in private directory
  53. '  MarkTime       60200  Give visual feedback during lengthy process
  54. '  MetaGSR        60130  Meta statement global search and replace
  55. '  MsgImport      59698  Allow local user to import a text file to a message
  56. '  Muzak          59100  Play musical themes for different RBBS functions
  57. '  NewPassword    60668  Get a new password
  58. '  Protocol       62600  Determine if external protocols are available
  59. '  PutMsgAttr     62520  Save attributes of original message
  60. '  Remove         58210  Remove characters from within strings
  61. '  RotorsDir      58700  Searches for a file using list of subdirs
  62. '  RptTime        62540  Report date/time and time on
  63. '  SearchArray    58190  Check for the occurance of a string in an array
  64. '  SetEcho        59600  Set RBBS properly for who is to echo
  65. '  SetHiLite      59934  Set user preference on highlighting
  66. '  SetGraphic     59980  Sets graphic preference for text file display
  67. '  SetNewUserDef  64645  Sets new user defaults
  68. '  SmartText      58250  Process SMART TEXT control strings
  69. '  SubMenu        59500  Processes options that have sub-menus
  70. '  TimedOut       63000  Write timed exit semaphore file
  71. '  TimeLock       60180  Check for TIME LOCK on certain features
  72. '  Transfer       62624  RBBS-PC support for external protocols for file transfer
  73. '  Toggle         57000  Toggles or views user options
  74. ' TwoByteDate     59200  Reduces a data to 2 byte string for space compression
  75. '  UnPackDate     59902  Uncompresses a 2 byte date
  76. '  UserColor      59965  Lets user set color for text and whether bold
  77. '  UserFace       59450  Processes programmable user interface
  78. '  ViewArc        64600  Display .ARC file contents to user
  79. '  PrivDoorRtn    62629  Private door exit routine
  80. '  WipeLine       58800  Wipes away a line so next prints in its place
  81. '  WordWrap       59710  Adjust a msg -- wrap lines and perserve paragraphs
  82. '
  83. '  $INCLUDE: 'RBBS-VAR.BAS'
  84. '
  85. * REPLACING old line(s) by new
  86. 57000 ' $SUBTITLE: 'Toggle - Toggle User Preferences'
  87. ' $PAGE
  88. '
  89. '  NAME    -- Toggle
  90. '
  91. '  INPUTS  -- ToggleOption      Option to toggle or view
  92. '                               according to the following:
  93. '    ToggleOption         PREFERENCE
  94. '   Toggle   VIEW
  95. * ------[ first line different ]------
  96. '     1       -1           AnsiEd Toggle
  97. '     2       -2           Bulletin review on logon
  98. '     3       -3           Case change
  99. '     4       -4           File review on logon
  100. '     5       -5           Highlight
  101. '     6       -6           Line feeds
  102. '     7       -7           Nulls
  103. '     8       -8           TurboKey
  104. '     9       -9           Expert
  105. '    10      -10           Bell
  106. '    11      -11           Chat Availability            'RChat401
  107. '
  108. '  OUTPUTS -- ZSubParm   passed from TPut
  109. '
  110. '  PURPOSE -- Sets or views any single user preference value
  111. '
  112.       SUB Toggle (ToggleOption) STATIC
  113.       ZSubParm = 0
  114.       IF ToggleOption < 0 THEN _
  115.          GOTO 57005
  116.       ON ToggleOption GOSUB _
  117.          57010, _         'AnsiEd toggle
  118.          57120, _         'Bulletin review on logon
  119.          57260, _         'Case change
  120.          57150, _         'File review on logon
  121.          57040, _         'Highlight
  122.          57100, _         'Line feeds
  123.          57210, _         'Nulls
  124.          57230, _         'TurboKey
  125.          57190, _         'Expert
  126.          57170, _            'Bell
  127.          57300             'Internode chat availability           ' RCHAT-Mpl
  128.       EXIT SUB
  129. * REPLACING old line(s) by new
  130. 57005 CALL AskMore ("",ZTrue,ZTrue,WasX,ZTrue)
  131.       ON -ToggleOption GOSUB _
  132. * ------[ first line different ]------
  133.          57030, _         'AnsiEd Toggle
  134.          57130, _         'Bulletin review on logon
  135.          57270, _         'Case change
  136.          57160, _         'File review on logon
  137.          57050, _         'Highlight
  138.          57110, _         'Line feeds
  139.          57220, _         'Nulls
  140.          57240, _         'TurboKey
  141.          57200, _         'Expert
  142.          57180, _            'Bell
  143.          57310         'Internode chat availability               ' RCHAT-Mpl
  144.       EXIT SUB
  145. * REPLACING old line(s) by new
  146. 57010 ZFullScreenEditor = NOT ZFullScreenEditor      
  147. * DELETING old line(s)
  148. 57020
  149. * REPLACING old line(s) by new
  150. * ------[ first line different ]------
  151. 57030 X = 121
  152.       Gosub 57400
  153.       CALL QuickTPut1 (OutTxt$ + FNOffOn$(ZFullScreenEditor))
  154.       RETURN
  155. * REPLACING old line(s) by new
  156. 57040 IF ZEmphasizeOnDef$ = "" THEN _
  157. * ------[ first line different ]------
  158.        X = 122 : _       'Pe 01/19/93
  159.        Gosub 57400 : _   'Pe 01/19/93
  160.         CALL QuickTPut1 (OutTxt$) : _
  161.         RETURN
  162.      IF NOT ZHiLiteOff THEN _
  163.         CALL QuickTPut (ZColorReset$,0)
  164.      CALL SetHiLite (NOT ZHiLiteOff)
  165.      GOSUB 57050
  166.      CALL UserColor
  167.      RETURN
  168. * REPLACING old line(s) by new
  169. 57050 IF ZEmphasizeOn$ <> "" THEN _
  170.         ZEmphasizeOff$ = ZEscape$ + "[" + ZBoldText$ + _
  171.         ";40;" + MID$(STR$(ZUserTextColor),2) + "m"
  172. * ------[ first line different ]------
  173.        X = 123        'Pe 01/19/93
  174.        Gosub 57400    'Pe 01/19/93
  175.      CALL QuickTPut1 (ZEmphasizeOn$ + OutTxt$ + ZEmphasizeOff$ + _
  176.                        FNOffOn$(NOT ZHiLiteOff))
  177.      RETURN
  178. * REPLACING old line(s) by new
  179. * ------[ first line different ]------
  180. 57110  X = 124        'Pe 01/19/93
  181.        Gosub 57400    'Pe 01/19/93
  182.       CALL QuickTPut1 (OutTxt$ + FNOffOn$(ZLineFeeds))
  183.       CALL SetCrLf
  184.       RETURN
  185. * REPLACING old line(s) by new
  186. * ------[ first line different ]------
  187. 57130  X = 125       'Pe 01/19/93
  188.        Gosub 57400    'Pe 01/19/93
  189.       ZOutTxt$ = MID$("Skip Check",1 -5 * ZCheckBulletLogon,5) + OutTxt$
  190.       CALL QuickTPut1 (ZOutTxt$)
  191.       RETURN
  192. * REPLACING old line(s) by new
  193. * ------[ first line different ]------
  194. 57160  X = 126       'Pe 01/19/93
  195.        Gosub 57400   'Pe 01/19/93
  196.        ZOutTxt$ = MID$("CheckSkip",1 -5 * ZSkipFilesLogon,5) + OutTxt$
  197.        CALL QuickTPut1 (ZOutTxt$)
  198.       RETURN
  199. * REPLACING old line(s) by new
  200. * ------[ first line different ]------
  201. 57180  X = 127        'Pe 01/19/93
  202.        Gosub 57400   'Pe 01/19/93
  203.       ZOutTxt$ = OutTxt$  + FNOffOn$(ZPromptBell)
  204.       CALL QuickTPut1 (ZOutTxt$)
  205.       RETURN
  206. * REPLACING old line(s) by new
  207. * ------[ first line different ]------
  208. 57200   X = 128        'Pe 01/19/93
  209.        Gosub 57400    'Pe 01/19/93
  210.       ZOutTxt$ = MID$(OutTxt$,1 -6 * ZExpertUser,6)
  211.       CALL QuickTPut1 (ZOutTxt$)
  212.       RETURN
  213. * REPLACING old line(s) by new
  214. * ------[ first line different ]------
  215. 57220 X = 129       'Pe 01/19/93
  216.       Gosub 57400    'Pe 01/19/93
  217.       ZOutTxt$ = OutTxt$ + FNOffOn$(ZNulls)
  218.       CALL QuickTPut1 (ZOutTxt$)
  219.       RETURN
  220. * REPLACING old line(s) by new
  221. * ------[ first line different ]------
  222. 57240 X = 130 : _       'Pe 01/19/93
  223.       Gosub 57400 : _   'Pe 01/19/93
  224.       CALL QuickTPut1 (OutTxt$ + FNOffOn$(ZTurboKeyUser))
  225.       RETURN
  226. * REPLACING old line(s) by new
  227. 57260 IF NOT ZUpperCase THEN _
  228.          IF (NOT ZHiLiteOff) OR ZUserGraphicDefault$ = "C" THEN _
  229. * ------[ first line different ]------
  230.        X = 131 : _       'Pe 01/19/93
  231.        Gosub 57400 : _   'Pe 01/19/93
  232.             CALL QuickTPut1 (OutTxt$) : _
  233.             RETURN
  234.       ZUpperCase = NOT ZUpperCase
  235. * REPLACING old line(s) by new
  236. * ------[ first line different ]------
  237. 57270  X = 132        'Pe 01/19/93
  238.       Gosub 57400   'Pe 01/19/93
  239.       ZOutTxt$ = OutTxt$ + " " + _
  240.             MID$("and lowerONLY",1 - 9 * ZUpperCase,9)
  241.       CALL QuickTPut1 (ZOutTxt$)
  242. * REPLACING old line(s) by new
  243. 57280 ZUseTPut = (ZUpperCase OR ZXOnXOff)
  244.       RETURN
  245. * ------[ first line different ]------
  246. * INSERTING new line(s)
  247. 57300 ZAvailableForChat = NOT ZAvailableForChat                      ' RCHAT
  248. 57310  X = 133        'Pe 01/19/93
  249.        Gosub 57400   'Pe 01/19/93
  250.       ZOutTxt$ = OutTxt$ + MID$("NO YES", 1 -3 * ZAvailableForChat, 3)
  251.       CALL QuickTPut1 (ZOutTxt$)                                     ' RCHAT
  252.       RETURN
  253. 57400 Call GetRBBSString(X,RBBSString$)     'Pe 01/16/93
  254.       OutTxt$ = RBBSString$                 'Pe 01/16/93
  255.       Return
  256.       END SUB
  257. '
  258. * REPLACING old line(s) by new
  259. 58200 ' $SUBTITLE: 'FMS - subroutine to search the upload management system'
  260. ' $PAGE
  261. '
  262. '  NAME    -- FMS
  263. '
  264. '  INPUTS  -- PARAMETER                      MEANING
  265. '             DirToSearch$          RBBS-PC "DIR" CATEGORY TO LOOK
  266. '                                     FOR
  267. '             SearchString$          STRING TO SEARCH FOR
  268. '             SearchDate$            DATE TO SEARCH FOR
  269. '             ZCategoryName$()
  270. '             ZCategoryCode$()
  271. '             ZCategoryDesc$()
  272. '             CatFound
  273. '             ZNumCategories
  274. '
  275. '  OUTPUTS -- ProcessedInFMS
  276. '             DnldFlag
  277. '
  278. '  PURPOSE -- To search the file management system and display the
  279. '             files being searched for as well as the catetory descriptions
  280. '
  281.       SUB FMS (DirToSearch$,SearchString$,SearchDate$, _
  282.                ProcessedInFMS,ZCategoryName$(1),ZCategoryCode$(1), _
  283.                ZCategoryDesc$(1),DnldFlag,CatFound,AbortIndex) STATIC
  284.       DnldFlag = 0
  285.       CALL SearchArray (DirToSearch$,ZCategoryName$(),ZNumCategories,CatFound)
  286.       ProcessedInFMS = ProcessedInFMS OR (CatFound > 0)
  287. * ------[ first line different ]------
  288. IF ZFG4$ <> "" THEN _
  289.     FG5$ = ZEscape$ + "[1;34;40m" : _
  290.     FG6$ = ZEscape$ + "[1;37;41m" : _
  291.     FG7$ = ZEscape$ + "[1;37;44m"         'Pe 02/05/90
  292.       IF ProcessedInFMS THEN _
  293.          ZSubParm = 5 : _
  294.          GOSUB 58202 : _
  295.      CALL QuickTPut("",1) : _
  296.      CALL QuickTPut(FG5$+"╔═"+FG6$+" "+DirToSearch$+" "+FG5$+"═══",0) : _
  297.      CALL QuickTPut(FG6$ +" "+ ZCategoryDesc$(CatFound) +" " + FG5$ + "════" + _
  298.             ZFG3$+" " +  SrchDir$,1) : _
  299.      CALL QuickTPut(FG5$+ "║",1)  : _
  300.      CALL QuickTPut("╚═"+FG7$+"File Name"+FG5$+"═════" + FG7$ + "Size" + _
  301.             FG5$+"═════",0) : _
  302.      CALL QuickTPut(FG7$+"Date"+FG5$+"════"+FG7$ + "Description"+ _
  303.           FG5$+"════════════════════════════"+ZFG3$+" "+ZEmphasizeOff$,1) : _
  304.      Cat$ = ZCategoryCode$(CatFound) : _
  305.      CALL DispUpDir (CAT$,SearchString$,SearchDate$,DnldFlag,AbortIndex)
  306.       EXIT SUB
  307. * REPLACING old line(s) by new
  308. 58202 ZOutTxt$ = SearchDate$
  309.       IF LEN(ZOutTxt$) > 0 THEN _
  310.          ZOutTxt$ = MID$(ZOutTxt$,3) + LEFT$(ZOutTxt$,2)
  311. * ------[ first line different ]------
  312.       SrchDir$ = SearchString$ + _
  313.              ZOutTxt$
  314.       IF SrchDir$ <> "" THEN _
  315.           SrchDir$ = ZFG4$ + "Scanning for "  + ZFG2$ + SrchDir$
  316.       RETURN
  317.       END SUB
  318. * REPLACING old line(s) by new
  319. 58250 ' $SUBTITLE: 'SmartText - smart text substitution'
  320. ' $PAGE
  321. '
  322. '  NAME    -- SmartText   (WRITTEN BY DOUG AZZARITO)
  323. '
  324. '  INPUTS  -- StringWork$        string to scan for Smart Text
  325. '             CRFound            Does this line contain a CR?
  326. '             ZSmartTextCode     Smart Text control code
  327. '
  328. '  OUTPUTS -- StringWork$        Input string with Smart replaced
  329. '
  330. '  PURPOSE -- Smart Text allows control strings in text files
  331. '             to be replaced at runtime with user info or other
  332. '             data.  The Smart Text control code is a 1-byte
  333. '             code (configurable) with a 2-byte action code.
  334. '
  335. * ------[ first line different ]------
  336.       SUB SmartText (StringWork$, CRFound, OverStrike, Xtra) STATIC 'Pe040692
  337.       IF SmartCarry$<>"" THEN _
  338.          StringWork$ = SmartCarry$+StringWork$
  339.       Index = INSTR(StringWork$, ZSmartTextCode$)
  340.       WHILE Index > 0 AND Index < LEN(StringWork$)-1
  341.          IF INSTR(MID$(StringWork$, Index+1,2)," ") THEN _
  342.             SmartAct = 0 _
  343.          ELSE _
  344.             SmartAct = INSTR(ZSmartTable$, MID$(StringWork$, Index+1, 2))
  345.          IF SmartAct = 0 THEN _
  346.             WasI = 1 : _
  347.             GOTO 58254
  348.          SmartAct = (SmartAct+2)/3
  349.          ON SmartAct GOSUB 58260, 58261, 58262, 58263, 58264, 58265, _
  350.                            58266, 58267, 58268, 58269, 58270, _
  351.                            58271, 58272, 58273, 58274, 58275, _
  352.                            58276, 58277, 58278, 58279, 58280, _
  353.                            58281, 58282, 58283, 58284, 58285, _
  354.                            58286, 58287, 58289, 58290, 58291, _
  355.                            58292, 58293, 58294, 58295, 58296, _
  356.                            58297, 58298, 58299, 58300, 58301, _
  357.                            58302, 58303, 58304, 58305, 58306
  358.          GOSUB 58256
  359.          WasI = LEN(SmartHold$)
  360.          ReplaceLen = 3
  361.          IF OverStrike OR Overlay THEN _
  362.             IF WasI > 2 THEN _
  363.                ReplaceLen = WasI _
  364.             ELSE _
  365.                SmartHold$ = SmartHold$ + SPACE$(3 - WasI)
  366.          StringWork$ = LEFT$(StringWork$, Index-1) + SmartHold$ + _
  367.                        MID$(StringWork$,Index+ReplaceLen)
  368. * REPLACING old line(s) by new
  369. * ------[ first line different ]------
  370. 58260 IF Xtra Then _           'Pe 02/05/93
  371.          Goto 58288                                                  'Pe021393
  372.       ZLinesPrinted = 0                     ' CS (Clear screen line count reset)
  373.       SmartHold$ = ""
  374.       RETURN
  375. * REPLACING old line(s) by new
  376. * ------[ first line different ]------
  377. 58262 if Xtra Then _          'Pe 02/05/93
  378.          Goto 58288                                                  'Pe021393
  379.       ZNonStop = ZTrue                      ' NS Non-stop
  380.       SmartHold$ = ""
  381.       RETURN
  382. * REPLACING old line(s) by new
  383. 58273 SmartHold$ = ZCityState$              ' CT Users CITY & STATE
  384. * ------[ first line different ]------
  385.       CALL Trim (SmartHold$)                                         ' DD032301
  386.       RETURN
  387. * REPLACING old line(s) by new
  388. * ------[ first line different ]------
  389. 58286 IF Xtra THEN _                                                 ' DD020801
  390.          Goto 58288                                                  'Pe021393
  391.       Overlay = ZTrue                       ' VY Overlay ON
  392.       GOTO 58288
  393. * REPLACING old line(s) by new
  394. * ------[ first line different ]------
  395. 58287 IF Xtra THEN _                                                 ' DD020801
  396.          Goto 58288                                                  'Pe021393
  397.        Overlay = ZFalse                      ' VN Overlay OFF
  398. * REPLACING old line(s) by new
  399. * ------[ first line different ]------
  400. 58290 IF Xtra THEN _                                                 ' DD020801
  401.          Goto 58288                                                  'Pe021393
  402.        TrimSmart = ZFalse                    ' TN Trim No
  403.       GOTO 58288
  404. * REPLACING old line(s) by new
  405. * ------[ first line different ]------
  406. 58295 SmartHold$ = ZConfName$ ' CN Conference Name
  407.       RETURN
  408. * INSERTING new line(s)
  409. 58296 SmartHold$ = ZFG5$                                          ' DD061303
  410.       GOTO 58258                                                  ' DD061303
  411. 58297 SmartHold$ = ZFG6$                                          ' DD061303
  412.       GOTO 58258                                                  ' DD061303
  413. 58298 SmartHold$ = ZFG7$                                          ' DD061303
  414.       GOTO 58258                                                  ' DD061303
  415. 58299 SmartHold$ = ZFG8$                                          ' DD061303
  416.       GOTO 58258                                                  ' DD061303
  417. * REPLACING old line(s) by new
  418. * ------[ first line different ]------
  419. 58300 SmartHold$ = ZFG9$                                          ' DD061303
  420.       GOTO 58258                                                  ' DD061303
  421. * REPLACING old line(s) by new
  422. * ------[ first line different ]------
  423. 58301 SmartHold$ = ZFGA$                                          ' DD061303
  424.       GOTO 58258                                                  ' DD061303
  425. * REPLACING old line(s) by new
  426. * ------[ first line different ]------
  427. 58302 SmartHold$ = ZFGB$                                          ' DD061303
  428.       GOTO 58258                                                  ' DD061303
  429. * REPLACING old line(s) by new
  430. * ------[ first line different ]------
  431. 58303 SmartHold$ = ZFGC$                                          ' DD061303
  432.       GOTO 58258                                                  ' DD061303
  433. * REPLACING old line(s) by new
  434. * ------[ first line different ]------
  435. 58304 SmartHold$ = ZFGD$                                          ' DD061303
  436.       GOTO 58258                                                  ' DD061303
  437. * REPLACING old line(s) by new
  438. * ------[ first line different ]------
  439. 58305 SmartHold$ = ZFGE$                                          ' DD061303
  440.       GOTO 58258                                                  ' DD061303
  441. * INSERTING new line(s)
  442. 58306 SmartHold$ = ZFGF$                                          ' DD061303
  443.       GOTO 58258                                                  ' DD061303
  444.       END SUB
  445. '
  446. 'Line numbers changed from 58300-58307 to 58350-58357 'Pe 06/21/92
  447. '  to allow additional SmartText Colors
  448. '
  449. * DELETING old line(s)
  450. 58307
  451. * INSERTING new line(s)
  452. 58350 ' $SUBTITLE: 'BufString - write a string with imbedded ZCR/LF'
  453. ' $PAGE
  454. '
  455. '  NAME    -- BufString
  456. '
  457. '  INPUTS  -- PARAMETER                      MEANING
  458. '             Strng$                  STRING TO BE WRITTEN OUT
  459. '             DataSize               LENGTH OF STRING - # LEFT
  460. '                                        CHARS TO OUTPUT
  461. '
  462. '  OUTPUTS -- Strng$                  IS WRITTEN TO THE USER
  463. '
  464. '  PURPOSE -- To search the string, Strng$, for embedded carriage
  465. '             returns and line feeds and write out each line with
  466. '             the appropriate substitution (cr/lf if to the local
  467. '             screen or cr/nulls/lf if to the communications port).
  468. '
  469.       SUB BufString (Strng$,PassedDataSize,AbortIndex) STATIC
  470.       WasL = LEN(Strng$)
  471.       IF PassedDataSize < WasL THEN _
  472.          WasL = PassedDataSize
  473.       IF WasL < 1 THEN _
  474.          EXIT SUB
  475.       ZFF = ZPageLength - 1
  476.       StartByte = 1
  477.       ZRet = ZFalse
  478.       IF CarryOver THEN _
  479.          IF ASC(Strng$) = 10 THEN _
  480.             StartByte = 2 : _
  481.             CALL SkipLine (1+ZJumpSearching)
  482.       CarryOver = (MID$(Strng$,WasL,1) = ZCarriageReturn$)
  483.       WasL = WasL + CarryOver
  484. 58351 CRat = INSTR(StartByte,Strng$,ZCarriageReturn$)
  485.       IF CRat > 0 AND CRat < WasL THEN _
  486.          CRFound = (MID$(Strng$,CRat + 1,1) = ZLineFeed$) _
  487.       ELSE CRFound = ZFalse
  488.       EOLlen = -2 * CRFound
  489.       IF CRFound THEN _
  490.          EOD = CRat _
  491.       ELSE EOD = WasL + 1
  492.       NumBytes = EOD - StartByte
  493.       StringWork$ = MID$(Strng$,StartByte,NumBytes)
  494.       IF NOT ZDeleteInvalid THEN _
  495.          GOTO 58352
  496.       Index = INSTR(StringWork$,"[")
  497.       WasJ = LEN(StringWork$) - 1
  498.       WHILE Index > 0 AND Index < WasJ
  499.          IF MID$(StringWork$,Index + 2,1) = "]" THEN _
  500.             IF INSTR (ZInvalidOpts$,MID$(StringWork$,Index + 1,1)) THEN _
  501.                MID$(StringWork$,Index + 1,1) = "*"
  502.          Index = INSTR(Index + 1,StringWork$,"[")
  503.       WEND
  504. 58352 IF ZJumpSearching THEN _
  505.          Temp$ = StringWork$ : _
  506.          CALL AllCaps (Temp$) : _
  507.          HiLitePos = INSTR (Temp$,ZJumpTo$) : _
  508.          IF HiLitePos = 0 THEN _
  509.             GOTO 58357 _
  510.          ELSE CALL Bracket (StringWork$,HiLitePos,HiLitePos+LEN(ZJumpTo$)-1,ZEmphasizeOn$,ZEmphasizeOff$) : _
  511.               ZJumpSearching = ZFalse
  512.       IF ZSmartTextCode THEN _
  513.          CALL SmartText (StringWork$, CRFound, ZFalse,ZFalse)   'Pe 02/06/93
  514.       IF NOT ZLocalUser THEN _
  515.          CALL EofComm (Char) : _
  516.          IF Char <> -1 THEN _
  517.             GOTO 58353            ' comm port input
  518.       ZKeyboardStack$ = INKEY$ : _
  519.       IF ZKeyboardStack$ <> "" THEN _  ' keyboard input
  520.          GOTO 58353
  521.       CALL QuickTPut (StringWork$, - (CRFound))
  522.       GOTO 58354
  523. 58353 ZOutTxt$ = StringWork$
  524.       ZSubParm = 4
  525.       IF CRFound THEN ZSubParm = 5
  526.       CALL TPut
  527. 58354 IF ZRet THEN _
  528.          EXIT SUB
  529.       IF ZLinesPrinted < ZFF THEN _
  530.          GOTO 58357
  531. 58355 CALL CheckTimeRemain (MinsRemaining)
  532.       CALL CheckCarrier
  533.       IF ZSubParm = -1 THEN _
  534.          EXIT SUB
  535.       IF ZNonStop THEN _
  536.          GOTO 58357
  537.       IF NOT CRFound THEN _
  538.          GOTO 58357
  539.       ZForceKeyboard = ZTrue
  540.       CALL AskMore ("",ZTrue,ZFalse,AbortIndex,ZStopInterrupts)
  541.       IF ZNo THEN _
  542.          ZRet = ZTrue : _
  543.          EXIT SUB
  544. 58357 StartByte = EOD + EOLlen
  545.       IF StartByte <= WasL THEN _
  546.          GOTO 58351
  547.       END SUB
  548. * REPLACING old line(s) by new
  549. 58400 ' $SUBTITLE: 'BufFile - subroutine to write a sequential file to the user'
  550. ' $PAGE
  551. '
  552. '  NAME    -- BufFile
  553. '
  554. '  INPUTS  -- PARAMETER                      MEANING
  555. '             FileSpec$               NAME OF THE FILE TO WRITE TO
  556. '                                                OUT TO THE USER
  557. '
  558. '  OUTPUTS -- NONE                    FILE IS WRITTEN TO THE USER
  559. '
  560. '  PURPOSE -- To display a sequential file to the user
  561. '
  562.       SUB BufFile (FilName$,AbortIndex) STATIC
  563.       CALL FindIt (FilName$)
  564.       IF NOT ZOK THEN _
  565.          GOTO 58419
  566.       ZNo = ZFalse
  567.       CALL OpenRSeq (FilName$,NumRecs,LenLastRec,ZBufferSize)
  568.       IF ZErrCode > 0 THEN _
  569.          GOTO 58419
  570.       DataSize = ZBufferSize
  571.       FIELD 2, DataSize AS SeqRec$
  572.       ZNonStop = ZNonStop OR (ZPageLength < 1)
  573.       ZJumpLast$ = ""
  574.       ZJumpSearching = ZFalse
  575.       ZJumpSupported = ZTrue
  576.       IF NOT ZStopInterrupts THEN _
  577.          IF NOT ZConcatFIles THEN _
  578.             IF NOT ZNonStop THEN _
  579. * ------[ first line different ]------
  580.             Call GetRBBSString(249,RBBSString$) : _     'Pe 01/16/93
  581.             ZOutTxt$ = RBBSString$  : _                'Pe 01/16/93
  582.                ZSubParm = 2 : _
  583.                CALL TPut
  584. IF ZSubParm = -1 THEN _
  585.      EXIT SUB               'Pe 02/09/90
  586.       WasTU = 0
  587. * REPLACING old line(s) by new
  588. 58419 CLOSE 2
  589. * ------[ first line different ]------
  590.       ZBypassTimeCheck = ZFalse
  591.       ZStopInterrupts = ZFalse
  592.       CALL QuickTPut (ZEmphasizeOff$,0)
  593.       ZJumpSupported = ZFalse
  594.       END SUB
  595. * REPLACING old line(s) by new
  596. 58700 ' $SUBTITLE: 'RotorsDir - search thru a list of subdirs for a file'
  597. ' $PAGE
  598. '
  599. '  NAME    -- RotorsDir
  600. '
  601. '  INPUTS  --     PARAMETER                    MEANING
  602. '             FilName$                  FILE NAME TO LOOK FOR
  603. '             SDIR.ARA                  ARRAY OF SUBDIRECTORIES
  604. '             MaxSearch                 MAX # OF SUBDIRECTORIES
  605. '             MarkingTime               WHETHER TO MARK TIME
  606. '
  607. '  OUTPUTS -- FNAME$                    ADD SUBDIRECTORY TO THE
  608. '                                       FILE NAME IF FOUND.  OTHER-
  609. '                                       WISE DON'T.
  610. '             ZOK                       TRUE IF FILE WAS Found
  611. '
  612. '  PURPOSE -- Hunt through a list of subdirectories to determine
  613. '             if a file is in any of them.  If file is found, open
  614. '             the file as file #2, add the drive/path to the file
  615. '             name, and sets ZOK to true.  If file isn't found, set
  616. '             file name to the last subdirectory searched -- which
  617. '             should be the upload subdirectory.
  618. '
  619. '             If the library menu is selected (ZMenuIndex = 6), then
  620. '             only 2 subdirectories are searched. The first being
  621. '             the work disk and the second being the selected
  622. '             library disk.
  623. '
  624. * ------[ first line different ]------
  625. '
  626. 'The following code replaces the ROTORSDIR sub in RBBSSUB4.BAS (Maple 0726).
  627. 'This code is fully compatible with the original ROTORSDIR code and makes RFM
  628. 'backwards compatible as well.  If extra FFS files are desired, create a file in
  629. 'the same directory called IDX.LST.  In this file, list the extra FIDX and LIDX
  630. 'files that you want to use.  They can have any name that you want.  If you want
  631. 'a Tab file, the name of the FIDX file must have only 7 characters to make room
  632. 'for the T added on to the name, just as is required with the primary FIDX file.
  633. 'Example:
  634. '
  635. 'c:\rbbs\dir\walnutf.def,c:\rbbs\dir\walnutl.def
  636. 'c:\rbbs\dir\pdsi7f.def,c:\rbbs\dir\pdsi7l.def
  637. 'c:\rbbs\dir\fidx1,c:\rbbs\dir\lidx1
  638. '
  639. 'These entries would cause RBBS to search the following in order:
  640. 'FIDX.DEF     FIDXT.DEF    LIDX.DEF
  641. 'WALNUTF.DEF  WALNUTFT.DEF WALNUTL.DEF
  642. 'PDSI7F.DEF   PDSI7FT.DEF  PDSI7L.DEF
  643. 'FIDX1        FIDX1T       LIDX1
  644.       SUB RotorsDir (FilName$,SDirAra$(1),MaxSearch,MarkingTime,PassToMacro$) STATIC
  645.       CALL Carrier
  646.       IF ZSubParm = -1 THEN _   'Pe 01/04/89
  647.       EXIT SUB                              'Pe 01/04/89
  648.       ZOK = ZFalse
  649.       ZDotFlag = ZFalse
  650.       IF MarkingTime THEN _
  651.       Call GetRBBSString(91,RBBSString$) : _     'Pe 01/16/93
  652.       OutTxt$ = RBBSString$  : _                'Pe 01/16/93
  653.          CALL QuickTPut (OutTxt$ + " "+FilName$,0)
  654.       NumSearch = 1
  655.       WasX = 0
  656.   WasX$ = ZArkViewPath$ + FilName$  'Pe 08/15/91
  657.          CALL FindFile (WasX$,ZOK)  'Pe 08/15/91
  658.           IF ZOK THEN _             'Pe 08/15/91
  659.           GOTO 58710                'Pe 08/15/91
  660.       WHILE (NOT ZOK) AND NumSearch <= MaxSearch AND _
  661.          SDirAra$(NumSearch) <> ""
  662.          IF MarkingTime THEN _
  663.             CALL MarkTime (WasX)
  664.          WasX$ = SDirAra$(NumSearch) + _
  665.               FilName$
  666.          CALL FindFile (WasX$,ZOK)
  667.          NumSearch = NumSearch + 1
  668.       WEND
  669.       IF ZOK OR NOT ZFastFileSearch THEN _
  670.          GOTO 58710
  671. '* ------[ first line different ]------
  672.    TFastFileList$ = ZFastFileList$                            'SM102201
  673.    TFastFileLocator$ = ZFastFileLocator$                      'SM102201
  674.    TFastTabs$ = ZFastTab$                                     'SM102201
  675.    Tptr = 1                                                   'SM102201
  676.    CALL BreakFileName (ZFastFileList$, Drive$,TWasX$,ZWasY$,ZTrue)    'SM102201
  677.    TIdxLst$ = Drive$ + "IDX.LST"                              'SM102201
  678.    CALL FindIt (TIdxLst$)                                     'SM102201
  679.       IF NOT ZOK THEN _                                       'SM102201
  680.          TIdxLst$ = ""                                        'SM102201
  681. * DELETING old line(s)
  682. 58705
  683. * INSERTING new line(s)
  684. 58708 FSize = 21                                              'SM102201
  685.       CALL OpenRSeq (TFastFileList$,HighRec,WasX,21)         ' WM050501
  686.       FIELD #2, 12 AS SearchFile$, _                         ' WM050501
  687.                  4 AS SearchPath$, _                         ' WM050501
  688.                  3 AS SearchDate$, _                         ' WM050501
  689.                  2 AS SearchCrLf$                            ' WM050501
  690.       Get 2,1                                                 'SM102201
  691.       if SearchCrLf$ <> ZCrLf$ then _                         'SM102201
  692.          FSize = 18 : _                                       'SM102201
  693.          CALL OpenRSeq (TFastFileList$,HighRec,WasX,18) : _   'SM102201
  694.          FIELD #2, 12 AS SearchFile$, _                       'SM102201
  695.                     4 AS SearchPath$, _                       'SM102201
  696.                     2 AS SearchCrLf$                          'SM102201
  697.       IF ZErrCode <> 0 THEN _
  698.          ZOK = ZFalse : _                                     'SM102201
  699.          GOTO 58710
  700.       CALL TrimTrail (FilName$,".")
  701.       CALL BinSearch (FilName$,1,12,FSize,HighRec,RecFoundAt,RecFound$) 'SM102201
  702.       ZOK = (RecFoundAt > 0)
  703.       ZFastTab$ = TFastTab$                                   'SM102201
  704.       IF ZOK THEN _                                           'SM102201
  705.          GOTO 58709                                           'SM102201
  706.       IF TIdxLst$ = "" THEN _                                 'SM102201
  707.          GOTO 58710                                           'SM102201
  708.       CALL OpenWork(2,TIdxLst$)                               'SM102201
  709.       IF ZErrCode <> 0 THEN _                                 'SM102201
  710.          ZOK = ZFalse : _                                     'SM102201
  711.          GOTO 58710                                           'SM102201
  712.       CALL ReadParmsX(2,ZOutTxt$(),2,TPtr)                    'SM102201
  713.       IF ZErrCode <> 0 or ZOutTxt$(1)="" or ZOutTxt$(2)="" THEN _    'SM102201
  714.          ZOK = ZFalse : _                                     'SM102201
  715.          GOTO 58710                                           'SM102201
  716.       TPtr = TPtr + 1                                         'SM102201
  717.       TFastFileList$ = ZOutTxt$(1)                            'SM102201
  718.       TFastFileLocator$ = ZOutTxt$(2)                         'SM102201
  719.       CALL BreakFileName (TFastFileList$,Drive$,TWasX$,ZWasY$,ZTrue) 'SM102201
  720.       TFN$ = Drive$ + TWasX$ + "T" + ZWasY$                   'SM102201
  721.       CALL FindIt (TFN$)                                      'SM102201
  722.       IF ZOK THEN _                                           'SM102201
  723.          CALL OpenRSeq (TFN$, TWasX, WasY, 72) : _            'SM102201
  724.          FIELD 2, 72 AS IndexRec$ : _                         'SM102201
  725.          GET 2, 1 : _                                         'SM102201
  726.          ZFastTabs$ = IndexRec$ : _                           'SM102201
  727.          CLOSE 2 _                                            'SM102201
  728.       ELSE _                                                  'SM102201
  729.          ZFastTabs$ = ""                                      'SM102201
  730.       GOTO 58708                                              'SM102201
  731. 58709 ZOK = ZFalse                                            'SM102201
  732.       CALL CheckInt (MID$(RecFound$,13,4))
  733.       IF ZTestedIntValue < 1 THEN _
  734.          GOTO 58710
  735.       WasDX$ = DATE$                                         ' Pe081091
  736.       LSET SearchDate$ = CHR$ (VAL (MID$ (WasDX$, 9, 2)) - 48) + _   ' Pe081091
  737.                          CHR$ (VAL (MID$ (WasDX$, 1, 2)) + 31) + _   ' Pe081091
  738.                          CHR$ (VAL (MID$ (WasDX$, 4, 2)) + 31)       ' Pe081091
  739.       PUT 2, RecFoundAt                                      ' WM050501
  740.       CALL OpenRSeq (TFastFileLocator$,HighRec,WasX,66)       'SM102201
  741.       IF ZErrCode <> 0 OR ZTestedIntValue > HighRec THEN _
  742.          GOTO 58710
  743.       FIELD 2, 66 AS LocatorRec$
  744.       GET 2, ZTestedIntValue
  745.       Temp$ = WasX$
  746.       WasX$ = LEFT$(LocatorRec$,63)
  747.       CALL Trim (WasX$)
  748.       IF LEFT$(WasX$,2) = "M!" THEN _
  749.          ZOK = ZFalse : _
  750.          ZGSRAra$(1) = PassToMacro$ : _
  751.          WasX$ = RIGHT$(WasX$,LEN(WasX$)-2) : _
  752.          CALL Trim (WasX$) : _
  753.          ZFileLocation$ = "" : _
  754.          CALL MacroExe (WasX$) : _
  755.          IF ZFileLocation$ = "" THEN _
  756.             ZOK = ZFalse : _
  757.             WasX$ = Temp$ : _
  758.             GOTO 58710 _
  759.          ELSE WasX$ = ZFileLocation$
  760.       WasX$ = WasX$ + FilName$
  761.       CALL FindFile (WasX$,ZOK)
  762.       IF NOT ZOK THEN _
  763.          WasX$ = SDirAra$(MaxSearch) + FilName$
  764.       GOTO 58710
  765. * REPLACING old line(s) by new
  766. * ------[ first line different ]------
  767. 58900 If ZEndList = ZTrue Then _     'Lk11/29/91
  768.       Exit Sub                       'Lk 11/29/91
  769.       ZOutTxt$ = ZDirPrompt$
  770.       ZMacroMin = 2
  771.       CALL PopCmdStack
  772.       IF ZWasQ = 0 OR ZSubParm = -1 THEN _
  773.          EXIT SUB
  774.       CALL AraAllCaps (ZUserIn$(),ZAnsIndex)
  775.       IF ZUserIn$(ZAnsIndex) = "Q" THEN _
  776.          ZWasQ = 0 : _
  777.          EXIT SUB
  778.       ZWasA = INSTR("E+.E-.E.L.H.?.",ZUserIn$(ZAnsIndex)+".")
  779.       IF ZWasA = 0 THEN _
  780.          EXIT SUB
  781.       IF ZWasA > 8 THEN _
  782.          IF ZAnsIndex < ZLastIndex THEN _
  783.             GOTO 58900 _
  784.          ELSE GOTO 58902
  785.       IF ZWasA = 7 THEN _
  786.          ZExtendedOff = NOT ZExtendedOff _
  787.       ELSE ZExtendedOff = (ZWasA > 3)
  788.       Call GetRBBSString(116,RBBSString$)     'Pe 01/16/93
  789.       OutTxt$ = RBBSString$                 'Pe 01/16/93
  790.       CALL QuickTPut1 (OutTxt$ + "  "+FNOffOn$(NOT ZExtendedOff))
  791.       GOTO 58900
  792. * DELETING old line(s)
  793. 59100
  794. 59102
  795. 59104
  796. 59106
  797. 59108
  798. 59110
  799. 59112
  800. 59114
  801. * REPLACING old line(s) by new
  802. 59456 ZFileName$ = ZCurPUI$
  803.       CALL Graphic (ZFileName$)
  804.       IF NOT ZOK THEN _
  805.          CALL UpdtCalr ("Missing menu " + ZCurPUI$,2) : _
  806.          ZCurPUI$ = ZPrevPUI$ : _
  807.          GOTO 59456
  808.       CALL BreakFileName(ZFileName$,ZWasZ$,ZActiveMenu$,ZWasZ$,ZTrue)
  809.       ZActiveMenu$ = LEFT$(ZActiveMenu$,1)
  810.       LSET ZLastCommand$ = ZActiveMenu$ + " "
  811.       ZPrevPUI$ = ZCurPUI$
  812.       LINE INPUT #2,ZFileName$
  813. * ------[ first line different ]------
  814. '     LINE INPUT #2,Prompt$                'SM091926
  815.       INPUT #2,Prompt$                    'SM091926
  816.       INPUT #2,ValidChoice$,ActualCommands$
  817.       LINE INPUT #2,MenuChoice$
  818.       LINE INPUT #2,MenuName$
  819.       LINE INPUT #2,QuitCmd$
  820. '     LINE INPUT #2,QuitPrompt$                'SM091926
  821.       INPUT #2,QuitPrompt$                'SM091926
  822.       LINE INPUT #2,QuitSubCmds$
  823.       LINE INPUT #2,QuitMenuOpt$
  824.       LINE INPUT #2,QuitMenus$
  825.       CALL Graphic (ZFileName$)
  826.       CALL BreakFileName (ZFileName$,MenuDrvPath$,WasX$,ZWasY$,ZTrue)
  827.       MenuToDisplay$ = ZFileName$
  828.       WasJ = INSTR(ZOrigCommands$,"?")
  829.       IF WasJ < 1 THEN _
  830.          WasX$ = "" _
  831.       ELSE WasX$ = MID$(ZAllOpts$,WasJ,1)
  832. * REPLACING old line(s) by new
  833. 59458 IF ZExpertUser THEN _
  834. * ------[ first line different ]------
  835.    Call QuickTput (ZConfName$ + ": ",0) : _ 
  836.       CALL DispTimeRemain (TimeRemaining!) : _
  837.               GOTO 59461
  838. * REPLACING old line(s) by new
  839. 59460 ZNonStop = (ZPageLength < 1)
  840. * ------[ first line different ]------
  841.      ZDeleteInvalid = ZTrue   'Pe 01/08/90
  842.      CALL BufFile (MenuToDisplay$,WasX)
  843.      ZDeleteInvalid = ZFalse  'Pe 01/08/90
  844.      CALL Line25               'Pe 01/13/90
  845.      Call QuickTput (ZConfName$ + ": ",0)
  846.      CALL DispTimeRemain (TimeRemaining!) 'Pe time mod  Moved line number down 04/02/90
  847. * REPLACING old line(s) by new
  848. 59461 MID$(ZLastCommand$,2,1) = " "
  849.       ZOutTxt$ = Prompt$
  850.       ZTurboKey = -ZTurboKeyUser
  851.       CALL PopCmdStack
  852.       IF ZSubParm = -1 OR ZFunctionKey <> 0 THEN _
  853.          EXIT SUB
  854.       IF ZWasQ = 0 THEN _
  855. * ------[ first line different ]------
  856.          GOTO 59461
  857. * REPLACING old line(s) by new
  858. * ------[ first line different ]------
  859. 59492 CALL Putcom (CHR$(7))   'Pe 04/25/92
  860.       Call GetRBBSString(134,RBBSString$)     'Pe 01/16/93
  861.       OutTxt$ = RBBSString$                 'Pe 01/16/93
  862.       CALL QuickTPut1 (OutTxt$ + ZWasZ$ + ">")
  863.       Call FlushKeys
  864.       GOTO 59460
  865.       END SUB
  866. * REPLACING old line(s) by new
  867. 59500 ' $SUBTITLE: 'SubMenu -- subroutine to process menus'
  868. ' $PAGE
  869. '
  870. '  NAME    -- SubMenu
  871. '
  872. '  INPUTS  --   PARAMETER     MEANING
  873. '             PassedPrompt$   PROMPT TO DISPLAY
  874. '             CurMenu$        NOVICE MENU TO DISPLAY
  875. '             FrontOpt$       DRIVE/PATH/PREFIX OF FILE
  876. '                             NEEDED FOR TYPED OPTION
  877. '             BackOpt$        SUFFIX/EXTENSION OF FILE
  878. '                             NEEDED WITH TYPED OPTION
  879. '             ReturnOn$       LETTERS CALLING PROGRAM WANTS
  880. '                             CONTROL ON
  881. '             GRDefault$      GRAPHICS DEFAULT TO USE
  882. '             VerifyInMenu    WHETHER VERIFY OPTION IS IN MENU
  883. '             AllMenuOK       WHETHER CONTROL SHOULD RETURN
  884. '                             WHEN IN MENU
  885. '             ZAnsIndex       # OF COMMANDS IN TYPE AHEAD
  886. '             RequireInMenu   WHETHER OPTION MUST BE IN MENU
  887. '
  888. '  OUTPUTS -- ZWasZ$              OPTION PICKED
  889. '             ZFileName$      NAME OF FILE SUPPORTING OPTION
  890. '
  891. '
  892. '  PURPOSE -- Handles menus - including conference, bulletins,
  893. '             doors, questionnaires.  Supports sub-menus (i.e.
  894. '             an option on the menu that invokes another menu)
  895. '
  896. * ------[ first line different ]------
  897. '* ("Join what, L)ist M)ain N)ext, all/mail S)ince P)ers, or name ([Q]uit)"
  898. '        PassedPromt$
  899. '
  900. '*    WasA1$,       MsgDrvPath$     ,"M.DEF",       ",M,MAIN,N,S,P,Q,"
  901. '    CurMenu$    FrontOption$    BackOption$          ReturnOn$
  902. '
  903. ' *   ZTrue,        ZFalse,        ZFalse,      "C.DEF",    WasX,    ZFalse)
  904. ' PassedVerfiyin  AllMenuOk     ReQuiredinMenu  BackOption  InMenu  ChkGraphic
  905. '
  906.       SUB SubMenu (PassedPrompt$,CurMenu$,FrontOpt$, _
  907.          BackOpt$,ReturnOn$,PassedVerifyInMenu, _
  908.          AllMenuOK,RequireInMenu,BackOpt2$,InMenu,ChkGraphic) STATIC
  909. * REPLACING old line(s) by new
  910. 59510 ZFileName$ = CurMenu$
  911.       InMenu = ZTrue
  912.       CALL BreakFileName (FrontOpt$,WasX$,FrontPre$,ZWasDF$,ZTrue)
  913.       CALL BreakFileName (CurMenu$,MenuDrv$,WasX$,ZWasDF$,ZTrue)
  914.       MenuFront$ = MenuDrv$ + LEFT$(WasX$,LEN(WasX$)-LEN(PreSuf$))
  915.       IF CurMenu$ = LastSubMenu$ THEN _
  916.          MenuFront$ = LEFT$(MenuFront$,LEN(MenuFront$)-1)
  917.       CALL Graphic (ZFileName$)
  918.       CurMenuVer$ = ZFileName$
  919.       ZStopInterrupts = ZFalse
  920. * ------[ first line different ]------
  921. * INSERTING new line(s)
  922. 59514 IF ZAnsIndex < ZLastIndex OR ZExpertUser THEN _               ' KG0111501
  923.          GOTO 59520
  924. * REPLACING old line(s) by new
  925. * ------[ first line different ]------
  926. 59520 CALL DispTimeRemain (MinsRemaining)                 'JA010801
  927.        ZOutTxt$ = PassedPrompt$            'get response
  928.       CALL PopCmdStack
  929.       IF ZWasQ = 0 OR ZSubParm = -1 THEN _
  930.          EXIT SUB
  931. * REPLACING old line(s) by new
  932. 59530 ZWasZ$ = ZUserIn$(ZAnsIndex)
  933.       CALL AllCaps (ZWasZ$)
  934. * ------[ first line different ]------
  935. '
  936.       IF CurMenu$ = ZConfMenu$ then                           ' Pe ConfNum Mod
  937. Call BreakFileName (ZConfMailList$,Drive$,Prefix$,Ext$,ZTrue)          
  938.      Call Findit(Drive$+"CONFNUM.DEF")                         ' Pe ConfNum2
  939.              IF NOT ZOK THEN _                                ' Pe ConfNum Mod
  940.                  Goto 59531                                   ' Pe ConfNum Mod
  941.       Call Openwork (2,Drive$ +"CONFNUM.DEF")                        ' Pe ConfNum Mod
  942.     While NOT EOF(2) AND (Not Foundit)                      ' Pe ConfNum Mod
  943.     Call ReadAny                                          ' Pe ConfNum Mod 
  944.          IF ZErrCode > 0 THEN _                               ' Pe Confnum2
  945.             Close 2 : _                                       'Pe Confnum2
  946.              Goto 59531                                       'Pe Confnum2
  947.         Dummy1$ = ZOutTxt$                                  ' Pe ConfNum Mod
  948.     Call ReadAny                                          ' Pe ConfNum Mod
  949.     Dummy2$ = ZOutTxt$                                    ' Pe ConfNum Mod
  950.     Call ReadAny                                          ' Pe ConfNum Mod
  951.     Dummy3$ = ZOutTxt$                                    ' Pe ConfNum Mod
  952.         Call ReadAny                'Pe 01/03/93
  953.         Dummy4$ = ZOutTxt$          'Pe 01/03/93
  954.     If ZWasZ$ = Dummy1$ or ZWasZ$ = Dummy4$ Then                           ' Pe ConfNum Mod
  955.           ZConfNum$ = Dummy1$
  956.          ConfNam$ = Dummy4$
  957.               Foundit = ZTrue                                 ' Pe ConfNum Mod
  958.        Call Breakfilename (Dummy2$,pre$,body$,ext$,ZFalse)    ' Pe ConfNum Mod
  959.              ZWasZ$ = Mid$(body$,1,LEN(body$)-(1))            ' Pe ConfNum Mod
  960.         END IF                                               ' Pe ConfNum Mod
  961.       Wend                                                    ' Pe ConfNum Mod
  962.     Close 2                                                   ' Pe ConfNum Mod
  963.   Foundit = ZFalse                                            ' Pe ConfNum Mod
  964.  End IF                                                       ' Pe ConfNum Mod
  965. '      
  966. * INSERTING new line(s)
  967. 59531    IF INSTR(ReturnOn$,","+ZWasZ$+",") THEN _  'check if calling pgm wants
  968.          EXIT SUB
  969.       IF INSTR("LH?",ZWasZ$) THEN _       'check whether caller wants help
  970.          GOTO 59515
  971.       IF INSTR(ZWasZ$,".") > 0 THEN _
  972.          GOTO 59532
  973.       CALL BadFile (ZWasZ$,WasBF)
  974.       IF WasBF > 1 THEN _
  975.          GOTO 59532
  976.       FPre$ = MenuFront$   ' check for sub-option
  977.       PreSuf$ = "-"
  978.       CALL BadFile (FPRE$ + ZWasZ$ + "-",WasBF)
  979.       ZOK = ZFalse
  980.       IF WasBF < 2 THEN _
  981.          VerifyInMenu = ZFalse : _
  982.          GOSUB 59538
  983.       PreSuf$ = ""
  984.       VerifyInMenu = PassedVerifyInMenu
  985.       IF NOT ZOK THEN _
  986.          FPre$ = FrontOpt$ : _    ' check standard option
  987.          GOSUB 59538 : _
  988.          IF NOT ZOK THEN _    ' check option where menu is
  989.             FPre$ = MenuDrv$ + FrontPre$ : _
  990.             IF FrontOpt$ <> FPre$ THEN _
  991.                GOSUB 59538
  992.       IF NewMenu THEN _
  993.          NewMenu = ZFalse : _
  994.          GOTO 59515
  995.       IF ZOK THEN _
  996.          EXIT SUB
  997. * REPLACING old line(s) by new
  998. 59532 GOSUB 59547
  999. * ------[ first line different ]------
  1000.       GOTO 59514                                                     ' KG011501
  1001. * REPLACING old line(s) by new
  1002. * ------[ first line different ]------
  1003. 59547 Call GetRBBSString(134,RBBSString$)     'Pe 01/16/93
  1004.       OutTxt$ = RBBSString$                 'Pe 01/16/93
  1005.       CALL QuickTPut1 (OutTxt$ + ZWasZ$+ ">")
  1006.       ZLastIndex = 0
  1007.       IF VerifyInMenu AND InMenu AND NOT RequireInMenu THEN _
  1008.          CALL UpdtCalr("Option " + ZWasZ$ + " on menu " + _
  1009.                        CurMenu$ + " but not found",1)
  1010.       RETURN
  1011. * REPLACING old line(s) by new
  1012. 59548 END SUB
  1013. * ------[ first line different ]------
  1014.  
  1015. * REPLACING old line(s) by new
  1016. 59698 ' $SUBTITLE: 'MsgImport -- subroutine to import a message'
  1017. ' $PAGE
  1018. '
  1019. '  NAME    -- MsgImport
  1020. '
  1021. '  INPUTS  --   PARAMETER     MEANING
  1022. '               MaxLines     MAXIMUM # OF LINES
  1023. '               MaxLen       MAXIMUM LENGTH OF A LINE
  1024. '               NumLines     NUMBER OF LINES ALREADY IN MESSAGE
  1025. '               LineAra$     ARRAY OF LINES IN MESSAGE
  1026. '
  1027. '  OUTPUTS --   NumLines
  1028. '               LineAra$
  1029. '
  1030. '  PURPOSE -- Allows local user to append a text file to
  1031. '             a message.   Will word wrap if needed.
  1032. '
  1033.       SUB MsgImport (MaxLines,MaxLen,NumLines,LineAra$(1)) STATIC
  1034.       IF NOT (ZLocalUser OR ZSysop) THEN _
  1035. * ------[ first line different ]------
  1036.       Call GetRBBSString(135,RBBSString$) : _     'Pe 01/16/93
  1037.        OutTxt$ = RBBSString$ : _                'Pe 01/16/93
  1038.          CALL QuickTPut1 (OutTxt$) : _
  1039.          EXIT SUB
  1040. * REPLACING old line(s) by new
  1041. * ------[ first line different ]------
  1042. 59700 Call GetRBBSString(136,RBBSString$)     'Pe 01/16/93
  1043.       OutTxt$ = RBBSString$                 'Pe 01/16/93
  1044.       ZOutTxt$ = OutTxt$ + ZPressEnter$
  1045.       CALL PopCmdStack
  1046.       IF ZSubParm = -1 OR ZWasQ = 0 THEN _
  1047.          EXIT SUB
  1048.       CALL FindIt (ZUserIn$(ZAnsIndex))
  1049.       IF NOT ZOK THEN _
  1050.       Call GetRBBSString(70,RBBSString$) : _     'Pe 01/16/93
  1051.        OutTxt$ = RBBSString$ : _                'Pe 01/16/93
  1052.          CALL QuickTPut1 (ZUserIn$(ZAnsIndex) +OutTxt$) : _
  1053.          GOTO 59700
  1054.       WHILE NOT EOF(2) AND NumLines < MaxLines
  1055.          NumLines = NumLines + 1
  1056.          LINE INPUT #2,LineAra$(NumLines)
  1057.       WEND
  1058.       CLOSE 2
  1059.       CALL WordWrap (MaxLen,NumLines,LineAra$())
  1060.       END SUB
  1061. * REPLACING old line(s) by new
  1062. 59703 ' $SUBTITLE: 'WordWrap -- subroutine to wrap lines in a message'
  1063. ' $PAGE
  1064. '
  1065. '  NAME    -- WordWrap
  1066. '
  1067. '  INPUTS  --   PARAMETER     MEANING
  1068. '               MaxLen       MAXIMUM LENGTH OF A SINGLE LINE
  1069. '               NumLines     NUMBER OF LINES IN A MESSAGE
  1070. '               LineAra$     ALL THE LINES IN THE MESSAGE
  1071. '
  1072. '  OUTPUTS --   NumLines
  1073. '               LineAra$
  1074. '
  1075. '  PURPOSE -- Batch adjusts a message, wrapping lines if
  1076. '             needed.  Preserves paragraph structure.
  1077. '
  1078.       SUB WordWrap (MaxLen,NumLines,LineAra$(1)) STATIC
  1079.       WasJ = 1
  1080. * ------[ first line different ]------
  1081.       SplitOn = 1  + .4 * MaxLen
  1082.       WHILE WasJ <= NumLines and NumLines < ZMaxMsgLines  'Pe 08/04/91
  1083.          ReFormatted = ZFalse
  1084. * REPLACING old line(s) by new
  1085. 59780 ' $SUBTITLE: 'GetAll -- subroutine to create directory list'
  1086. ' $PAGE
  1087. '
  1088. '  NAME    -- GetAll
  1089. '
  1090. '  INPUTS  --   PARAMETER     MEANING
  1091. '               LookIn$       NAME OF FILE TO SEARCH
  1092. '               DIR.EXT$      MAIN DIRECTORY EXTENSION TO USE
  1093. '               StartPos      Last POSITION USED IN ARRAY
  1094. '
  1095. '  OUTPUTS      StartPos     Last ELEMENT USED IN ARRAY
  1096. '               LoadInto$    ARRAY TO LOAD ELEMENTS Found
  1097. '
  1098. '  PURPOSE -- Creates a list (LoadInto$) of all directories
  1099. * ------[ first line different ]------
  1100. '             to be listed when A)ll is selected for a directory.
  1101. '             All uses config parm, which can be either a single
  1102. '             directory or list of directories (begin with "@").
  1103. '
  1104.       SUB GetAll (LoadInto$(1), StartPos) STATIC
  1105.       IF ZMasterDirName$ <> "" AND LEFT$(ZMasterDirName$,1) <> "@" THEN _
  1106.          StartPos = StartPos + 1 : _
  1107.          LoadInto$(StartPos) = ZMasterDirName$ : _
  1108.          EXIT SUB
  1109.       ZOK = ZFalse
  1110.       IF LEN (ZMasterDirName$) > 1 AND LEFT$(ZMasterDirName$,1) = "@" THEN _
  1111.          CALL FindIt(MID$(ZMasterDirName$,2))
  1112.       IF NOT ZOK THEN _
  1113.       Call GetRBBSString(137,RBBSString$) : _     'Pe 01/16/93
  1114.        OutTxt$ = RBBSString$ : _                'Pe 01/16/93
  1115.          CALL QuickTPut1 (OutTxt$) : _
  1116.          EXIT SUB
  1117.       MaxLoad = UBOUND(LoadInto$, 1)
  1118.       StartSort = StartPos + 1
  1119.       WHILE NOT EOF(2) AND StartPos < MaxLoad
  1120.          LINE INPUT #2, ZOutTxt$
  1121.          StartPos = StartPos + 1
  1122.          LoadInto$(StartPos) = ZOutTxt$
  1123.       WEND
  1124.       CLOSE 2
  1125.       END SUB
  1126. * REPLACING old line(s) by new
  1127. 59850 ' $SUBTITLE: 'ConfMail -- quickly checks mail waiting'
  1128. ' $PAGE
  1129. '
  1130. '  NAME    -- ConfMail
  1131. '
  1132. '  INPUTS  -- PARAMETER        MEANING
  1133. '         SKIP.CONFIRM         Whether to skip confirm of option
  1134. '         ZConfMailList$       File of user/message pairs to check
  1135. '         ZActiveUserFile$     Active user file (restored on exit)
  1136. '         ZActiveMessageFile$  Active msg file (restored)
  1137. '  OUTPUTS -- None
  1138. '
  1139. '  PURPOSE -- Quicking scans message header record to get
  1140. '             last msg # and user record to get whether any
  1141. '             new mail and last msg read, reports both, using
  1142. '             highlighting if new mail to caller.
  1143. '
  1144.       SUB ConfMail (MailCheckConfirm,LinkNew,LinkPers) STATIC
  1145.       SkipJoinUnjoin = ZNonStop OR LinkNew OR LinkPers
  1146.       IF ZStartHash = 1 AND ZUserFileIndex > 0 THEN _
  1147.          CALL FindIt (ZConfMailList$) _
  1148.       ELSE ZOK = ZFalse
  1149.       IF NOT ZOK THEN _
  1150.          EXIT SUB
  1151.       IF PrevMailList$ <> ZConfMailList$ THEN _
  1152.          SkipParms = 0
  1153.       PrevMailList$ = ZConfMailList$
  1154.       IF MailCheckConfirm THEN _
  1155. * ------[ first line different ]------
  1156.       Call GetRBBSString(301,RBBSString$) : _     'Pe 01/16/93
  1157.       ZOutTxt$ = RBBSString$  : _                'Pe 01/16/93
  1158.          ZTurboKey = -ZTurboKeyUser : _
  1159.          CALL PopCmdStack : _
  1160.          IF ZNo OR ZSubParm < 0 THEN _
  1161.             EXIT SUB
  1162.       CALL BreakFileName (ZActiveUserFile$,WasX$,NowInPre$,NowInExt$,ZFalse)
  1163.       CALL BreakFileName (ZOrigUserFile$,WasX$,OrigPre$,OrigExt$,ZFalse)
  1164.       CALL SkipLine (1)
  1165.       Call GetRBBSString(138,RBBSString$)     'Pe 01/16/93
  1166.        OutTxt$ = RBBSString$                'Pe 01/16/93
  1167.       CALL QuickTPut1 (OutTxt$)
  1168.       IF LinkNew OR LinkPers THEN _
  1169.          ZLinkedConf$ = ""
  1170.       AnyMail = ZFalse
  1171.       ZStopInterrupts = ZFalse
  1172.       WasA1$ = ZActiveUserFile$
  1173.       MsgFileSave$ = ZActiveMessageFile$
  1174.       TempIndivValue$ = ""
  1175.       UserFileIndexSave = ZUserFileIndex
  1176.       UserRecordHold$ = ZUserRecord$
  1177.       ZOK = ZTrue
  1178.       CALL ReadParms (ZWorkAra$(),1,SkipParms)
  1179.       IF SkipParms = 0 THEN _
  1180.          LogicalEOF$ = "" _
  1181.       ELSE LogicalEOF$ = ZWorkAra$(1)
  1182. * REPLACING old line(s) by new
  1183. 59851 IF NOT ZOK THEN _
  1184.          GOTO 59856 _
  1185.       ELSE IF EOF(2) THEN _
  1186.               IF LogicalEOF$ = "" OR SkipParms = 0 THEN _
  1187.                  GOTO 59856 _
  1188.               ELSE CALL FindIt (ZConfMailList$) : _
  1189.                    SkipParms = 0 : _
  1190.                    GOTO 59851
  1191. * ------[ first line different ]------
  1192. '                    Call ReadAny                               'Pe ConfNum Mod
  1193. '                    ConfNum$ = ZOutTxt$                        'Pe ConfNum Mod
  1194.                CALL ReadAny
  1195.          IF ZErrCode > 0 THEN _             'Pe 02/04/93
  1196.             GOTO 59856                      'Pe 02/04/93
  1197.          ZActiveUserFile$ = ZOutTxt$
  1198.          CALL ReadAny
  1199.          IF ZErrCode > 0 THEN _
  1200.             GOTO 59856
  1201.          SkipParms = SkipParms + 2
  1202.          ZActiveMessageFile$ = ZOutTxt$
  1203.  '      Call ReadAny                             'Pe 01/03/93
  1204.  '      ConfNam$ = ZOutTxt$                      'Pe 01/03/93
  1205.          CALL FindFile (ZActiveUserFile$,ZOK)
  1206.          IF NOT ZOK THEN _
  1207.             GOTO 59856
  1208.          CALL OpenUser (ZHighestUserRecord)
  1209.          FIELD 5, 128 AS ZUserRecord$
  1210.          CALL FindFile (ZActiveMessageFile$,ZOK)
  1211.          IF NOT ZOK THEN _
  1212.             GOTO 59856
  1213.          CALL FindUser (ZOrigUserName$,"",ZStartHash,ZLenHash,_
  1214.                         0,0,ZHighestUserRecord,_
  1215.                         Found,HoldUserFileIndex,ZWasSL)
  1216.          IF NOT Found THEN _
  1217.             GOTO 59853
  1218.          CALL OpenMsg
  1219.          FIELD 1, 128 AS ZMsgRec$
  1220.          GET 1,1
  1221.          AnyMail = ZTrue
  1222.          WasX = CVI(MID$(ZUserRecord$,57,2))
  1223.          FileWait = (WasX AND 4096) > 0
  1224.          WasX = (WasX AND 512) > 0
  1225.          CALL BreakFileName (ZActiveUserFile$,WasX$,CurPre$,CurExt$,ZFalse)
  1226.          InCur = (CurPre$ = NowInPre$ AND CurExt$ = NowInExt$)
  1227. * REPLACING old line(s) by new
  1228. 59852    IF InCur THEN _
  1229.             FileWait = ZFileWaiting : _
  1230.             WasX = ZMailWaiting : _
  1231.             ZWasA = ZLastMsgRead _
  1232.          ELSE ZWasA = CVI(MID$(ZUserRecord$,51,2))
  1233.          ZWasB = VAL(LEFT$(ZMsgRec$,8))
  1234.          WasZ = (ZWasB - ZWasA)
  1235.          IF WasZ < 0 THEN _
  1236.             ZWasA = 0 : _
  1237.             WasZ = ZWasB _
  1238.          ELSE IF WasZ = 0 THEN _
  1239.                  WasX = ZFalse
  1240.          ZWasSL = LEN(CurPre$)
  1241.          IF CurPre$ = "USERS" AND CurExt$ = "" THEN _
  1242.             Conf$ = "MAIN" _
  1243.          ELSE Conf$ = LEFT$(CurPre$,ZWasSL-1)
  1244.          ZOutTxt$ = MID$(STR$((ZWasB > ZWasA) * WasZ),2)
  1245.          Temp = LEN(ZOutTxt$)
  1246.          ZOutTxt$ = SPACE$(-(Temp<4) * (4-Temp)) + ZOutTxt$
  1247.          IF (WasZ > 0 AND LinkNew) OR (WasX AND LinkPers) THEN _
  1248.             IF (NOT InCur) THEN _
  1249.                CALL AddLink (Conf$)
  1250. * ------[ first line different ]------
  1251.             Temp = (INSTR(ZCarriageReturn$ + ZLinkedConf$,ZCarriageReturn$ + Conf$ + ZCarriageReturn$) > 0)
  1252. '         ZWasY$ = Space$(3-LEN(ZConfNum$)) + ZConfNum$ + " "  ' Pe ConfNum2 Mod
  1253.          ZWasY$ = MID$(" *",1-Temp,1) + Conf$ + SPACE$(-(ZWasSL<8) * (8-ZWasSL))  ' Pe ConfNum Mod
  1254.          IF WasX THEN _
  1255.             WasX$ = ZEmphasizeOn$ + "Some to you" + ZEmphasizeOff$ _
  1256.          ELSE WasX$ = "          "
  1257.          IF FileWait THEN _
  1258.             Temp$ = "  - " + ZEmphasizeOn$ + "Personal Uplds" + ZEmphasizeOff$ _
  1259.          ELSE Temp$ = ""
  1260.          ZOutTxt$ = ZWasY$ + ": " + ZOutTxt$ + " new message(s) " + _
  1261.               WasX$ + Temp$
  1262.          ZSubParm = 5
  1263.          CALL TPut
  1264.          ZJumpSupported = ZFalse
  1265.          IF SkipJoinUnjoin THEN _
  1266.             CALL AskMore ("",ZTrue,ZTrue,WasX,ZTrue) : _
  1267.             GOTO 59853
  1268.          ZTurboKey = -ZTurboKeyUser
  1269.          CALL AskMore (",J)oin,U)njoin,L)ink,D)elink",ZTrue,ZFalse,WasX,ZFalse)
  1270.          IF ZNo THEN _
  1271.             GOTO 59856
  1272.          WasX$ = LEFT$(ZUserIn$(1),1)
  1273.          CALL AllCaps (WasX$)
  1274.          IF WasX$ = "J" THEN _
  1275.             ZLastIndex = ZWasQ : _
  1276.             ZHomeConf$ = Conf$ : _
  1277.             GOTO 59856
  1278.          IF WasX$ = "D" THEN _
  1279.             CALL DeLink (Conf$) : _
  1280.             GOTO 59852
  1281.          IF WasX$ = "L" THEN _
  1282.             CALL AddLink (Conf$) : _
  1283.             GOTO 59852
  1284.          IF WasX$ = "U" THEN _
  1285.             IF InCur OR (OrigPre$ = CurPre$ AND OrigExt$ = CurExt$) THEN _
  1286.       Call GetRBBSString(139,RBBSString$) : _     'Pe 01/16/93
  1287.        OutTxt$ = RBBSString$ : _                'Pe 01/16/93
  1288.           CALL QuickTPut1 (OutTxt$) _
  1289.             ELSE LSET ZUserRecord$ = CHR$(0) + "deleted user" : _
  1290.                  ZUserFileIndex = HoldUserFileIndex : _
  1291.                  ZSubParm = 6 : _
  1292.                  CALL FileLock : _
  1293.                  PUT 5, HoldUserFileIndex : _
  1294.                  ZSubParm = 8 : _
  1295.                  CALL FileLock : _
  1296.                 Call GetRBBSString(140,RBBSString$) : _     'Pe 01/16/93
  1297.                 OutTxt$ = RBBSString$ : _                'Pe 01/16/93
  1298.                  CALL QuickTPut1 (OutTxt$ + " " + Conf$)
  1299. * REPLACING old line(s) by new
  1300. 59856 ZActiveUserFile$ = WasA1$
  1301.       CALL OpenUser (ZHighestUserRecord)
  1302.       FIELD 5, 128 AS ZUserRecord$
  1303.       IF (NOT ZRet) AND NOT AnyMail THEN _
  1304. * ------[ first line different ]------
  1305.       Call GetRBBSString(141,RBBSString$) : _     'Pe 01/16/93
  1306.        OutTxt$ = RBBSString$ : _                'Pe 01/16/93
  1307.          CALL QuickTPut1 (OutTxt$)
  1308.       ZUserFileIndex = UserFileIndexSave
  1309.       LSET ZUserRecord$ = UserRecordHold$
  1310.       ZActiveMessageFile$ = MsgFileSave$
  1311.       CALL OpenMsg
  1312.       FIELD 1, 128 AS ZMsgRec$
  1313.       GET 1,1
  1314.       ZNonStop = (ZPageLength < 1)
  1315.       WasX$ = ZUserIn$(ZAnsIndex+1)
  1316.       CALL AllCaps (WasX$)
  1317.       ZAnsIndex = ZAnsIndex - (WasX$ = "C")
  1318.       SkipParms = -(NOT EOF(2))*SkipParms
  1319.       LinkNew = ZFalse
  1320.       LinkPers = ZFalse
  1321.       END SUB
  1322. * REPLACING old line(s) by new
  1323. 59860 CALL QuickTPut (ZEmphasizeOff$,0)
  1324.       IF CantInterrupt THEN _
  1325.          ZTurboKey = 2 : _
  1326.          ZForceKeyboard = ZTrue : _
  1327. * ------[ first line different ]------
  1328.       Call GetRBBSString(302,RBBSString$) : _     'Pe 01/16/93
  1329.       ZOutTxt$ = RBBSString$  _                'Pe 01/16/93
  1330.       ELSE GOSUB 59870 : _
  1331.            ZOutTxt$ = ZMorePrompt$ + Temp$ + ExtraPrompt$ + LEFT$(">",-ZExpertUser)
  1332.       WasX = LEN(ZOutTxt$) + 2
  1333.       ZNoAdvance = OverWrite
  1334.       ZSubParm = 1
  1335.       IF ExtraPrompt$ = "" AND ZTurboKey = 0 THEN _
  1336.          ZTurboKey = -ZTurboKeyUser
  1337.       ZMacroMin = 2
  1338.       CALL TGet
  1339.       IF ZSubParm = -1 THEN _
  1340.         EXIT SUB
  1341.       ZTurboKey = ZFalse
  1342.       ZWasDF$ = ZUserIn$ (1)
  1343.       CALL AllCaps (ZWasDF$)
  1344.       WasI = INSTR(";C;A;",";"+ZWasDF$+";")
  1345.       IF WasI = 1 THEN _
  1346.          ZNonStop = ZTrue : _
  1347.          ZWasQ = 0
  1348.       CALL WipeLine (WasX + LEN(ZUserIn$))
  1349.       IF NOT ZHiLiteOff THEN _
  1350.          CALL QuickTPut (ZLastSmartColor$,0) : _  'Pe 08/26/92
  1351.          CALL QuickTput (ZEmphaSizeOFF$,0)      'Lk 07/16/90
  1352.       IF CantInterrupt THEN _
  1353.          ZNo = ZFalse : _
  1354.          EXIT SUB
  1355.       IF WasI = 3 THEN _
  1356.          ZLastIndex = 0 : _
  1357.          AbortIndex = 32000
  1358.       IF ZNo THEN _
  1359.          ZKeyboardStack$ = "" : _
  1360.          ZCommPortStack$ = "" : _
  1361.          ZLastSmartColor$ = ""
  1362.       IF NOT ZJumpSupported THEN _
  1363.          EXIT SUB
  1364.       IF ZWasDF$ = "J" THEN _
  1365.          IF ZWasQ > 1 THEN _
  1366.             ZUserIn$ = ZUserIn$(2) : _
  1367.             GOTO 59866 _
  1368.          ELSE Call GetRBBSString(303,RBBSString$) : _     'Pe 01/16/93
  1369.          ZOutTxt$ = RBBSString$ + ZPressEnterExpert$ : _
  1370.               CALL PopCmdStack : _
  1371.               IF ZWasQ = 0 THEN _
  1372.                  EXIT SUB _
  1373.               ELSE GOTO 59866
  1374.       IF ZWasDF$ <> "R" THEN _
  1375.          EXIT SUB
  1376.       ZUserIn$ = ZJumpLast$
  1377. * REPLACING old line(s) by new
  1378. 59921 Strng$ = ZDR1$ + LEFT$(Strng$,13) + ZDR2$ + MID$(Strng$,14,10) + _
  1379. * ------[ first line different ]------
  1380.                ZDR3$ + MID$(Strng$,24,10) + ZDR4$ + MID$(Strng$,34,ZMaxDescLen) + _
  1381.                ZEmphasizeoff$         'Pe 03/15/92
  1382.       EXIT SUB
  1383. * REPLACING old line(s) by new
  1384. 59934 ' $SUBTITLE: 'SetHiLite - subroutine to reset highlight preference'
  1385. ' $PAGE
  1386. '
  1387. '  NAME    --  SetHiLite
  1388. '
  1389. '  INPUTS  --  PARAMETER                   MEANING
  1390. '              SetTo              New value (True or False)
  1391. '              ZEmphasizeOnDef$   String turns emphasize on
  1392. '              ZEmphasizeOffDef$  String turns emphasize off
  1393. '
  1394. '  OUTPUTS --  ZHiLiteOff       Callers preference on Hilite
  1395. '              ZEmphasizeOn$       String to use for emphasis
  1396. '              ZEmphasizeOff$      String to use after emphasis
  1397. '
  1398.       SUB SetHiLite (SetTo) STATIC
  1399.       ZHiLiteOff = (ZEmphasizeOnDef$ <> "" AND SetTo)
  1400.       IF ZHiLiteOff THEN _
  1401.          ZEmphasizeOn$ = "" : _
  1402.          ZEmphasizeOff$ = "" : _
  1403.          ZFG1$ = "" : _
  1404.          ZFG2$ = "" : _
  1405.          ZFG3$ = "" : _
  1406. * ------[ first line different ]------
  1407.          ZFG4$ = "" : _                                              ' DD061303/COLR
  1408.          ZFG5$ = "" : _                                              ' DD061303/COLR
  1409.          ZFG6$ = "" : _                                              ' DD061303/COLR
  1410.          ZFG7$ = "" : _                                              ' DD061303/COLR
  1411.          ZFG8$ = "" : _                                              ' DD061303/COLR
  1412.          ZFG9$ = "" : _                                              ' DD061303/COLR
  1413.          ZFGA$ = "" : _                                              ' DD061303/COLR
  1414.          ZFGB$ = "" : _                                              ' DD061303/COLR
  1415.          ZFGC$ = "" : _                                              ' DD061303/COLR
  1416.          ZFGD$ = "" : _                                              ' DD061303/COLR
  1417.          ZFGE$ = "" : _                                              ' DD072201/COLR
  1418.          ZFGF$ = "" _                                                ' DD072201/COLR
  1419.       ELSE ZEmphasizeOn$ = ZEmphasizeOnDef$ : _
  1420.            ZFG1$ = ZFG1Def$ : _
  1421.            ZFG2$ = ZFG2Def$ : _
  1422.            ZFG3$ = ZFG3Def$ : _
  1423.            ZFG4$ = ZFG4Def$ : _                                      ' DD061303/COLR
  1424.            ZFG5$ = ZEscape$ + "[1;34;40m" : _     'Brt Blue          ' DD061303/COLR
  1425.            ZFG6$ = ZEscape$ + "[1;35;40m" : _     'Brt Magenta       ' DD061303/COLR
  1426.            ZFG7$ = ZEscape$ + "[1;33;44m" : _     'Yellow/Blue       ' DD061303/COLR
  1427.            ZFG8$ = ZEscape$ + "[1;33;42m" : _     'Yellow/Green      ' DD061303/COLR
  1428.            ZFG9$ = ZEscape$ + "[1;33;41m" : _     'Yellow/Red        ' DD061303/COLR
  1429.            ZFGA$ = ZEscape$ + "[1;33;45m" : _     'Yellow/Magenta    ' DD061303/COLR
  1430.            ZFGB$ = ZEscape$ + "[1;37;44m" : _     'White/Blue        ' DD061303/COLR
  1431.            ZFGC$ = ZEscape$ + "[1;37;42m" : _     'White/Green       ' DD061303/COLR
  1432.            ZFGD$ = ZEscape$ + "[1;37;41m" : _     'White/Red         ' DD061303/COLR
  1433.            ZFGE$ = ZEscape$ + "[1;37;45m" : _     'White/Magenta     ' DD061303/COLR
  1434.            ZFGF$ = ZEscape$ + "[1;36;44m"         'Brt Cyan/Blue     ' DD061303/COLR
  1435.       END SUB
  1436. * REPLACING old line(s) by new
  1437. 59940 ' $SUBTITLE: 'ColorPrompt - subroutine to colorize prompts'
  1438. ' $PAGE
  1439. '
  1440. '  NAME    --  ColorPrompt
  1441. '
  1442. '  INPUTS  --  PARAMETER                   MEANING
  1443. '              Strng$              String to colorize
  1444. '              ZHiLiteOff          Whether highlighting is off
  1445. '              ZEmphasizeOn$       String to use for emphasis
  1446. '              ZEmphasizeOff$      String to use after emphasis
  1447. '
  1448. '  OUTPUTS --  Strng$              Colorized string
  1449. '
  1450. '  PURPOSE -- colorizes a string based on sysop settings
  1451. '             and the string.
  1452. '                        [...] is the default - put in emphasis
  1453. '                        <...> options to type - put in ZFG4$
  1454. '                        and first two preceeding words use ZFG1$ and ZFG2$
  1455. '                        options identified on right by ) and on
  1456. '                        left by space or comma - put in ZFG4$
  1457. '
  1458.       SUB ColorPrompt (Strng$) STATIC
  1459. * ------[ first line different ]------
  1460.       CALL SmartText(Strng$,ZTrue,ZFalse,ZFalse)        'Pe 02/06/93
  1461.       IF ZHiLiteOff THEN _
  1462.          EXIT SUB
  1463.       AlreadyColorized = (INSTR(Strng$,ZEscape$) > 0)
  1464.       WasX = INSTR(Strng$,"<")
  1465.       IF WasX > 0 THEN _
  1466.          GOTO 59943
  1467.       WasX = INSTR(Strng$,"[")   ' highlight default
  1468.       IF WasX > 0 THEN _
  1469.          WasY = INSTR(WasX,Strng$,"]") : _
  1470.          IF WasY > 0 THEN _
  1471.             CALL FindLast (LEFT$(Strng$,WasY),"[",WasX,Temp) : _
  1472.             CALL Bracket (Strng$,WasX,WasY,ZEmphasizeOn$,ZEmphasizeOff$)
  1473.       IF AlreadyColorized THEN _
  1474.          EXIT SUB
  1475.       WasX = INSTR(Strng$,"<")
  1476.       IF WasX < 1 THEN _
  1477.          GOTO 59945
  1478. * REPLACING old line(s) by new
  1479. 59965 ' $SUBTITLE: 'UserColor - lets user set color for normal text'
  1480. ' $PAGE
  1481. '
  1482. '  NAME    --  UserColor
  1483. '
  1484. '  INPUTS  --  PARAMETER                   MEANING
  1485. '              ZEmphasizeOff$            Normal text color
  1486. '
  1487. '  OUTPUTS --  ZEmphasizeOff$            New text color
  1488. '              ZBoldText$                Whether bold (0 not, 1 bold)
  1489. '              ZUserTextColor            ANSI Color selected
  1490. '
  1491. '  PURPOSE --  Lets caller select desired color and whether bold.
  1492. '
  1493.       SUB UserColor STATIC
  1494.       IF ZHiLiteOff THEN _
  1495. * ------[ first line different ]------
  1496.          EXIT SUB _                                                  ' DD061303/COLR
  1497.       ELSE _                                                         ' DD061303/COLR
  1498.          ZFG5$ = ZEscape$ + "[1;34;40m" : _     'Brt Blue          ' DD061303/COLR
  1499.          ZFG6$ = ZEscape$ + "[1;35;40m" : _     'Brt Magenta       ' DD061303/COLR
  1500.          ZFG7$ = ZEscape$ + "[1;33;44m" : _     'Yellow/Blue       ' DD061303/COLR
  1501.          ZFG8$ = ZEscape$ + "[1;33;42m" : _     'Yellow/Green      ' DD061303/COLR
  1502.          ZFG9$ = ZEscape$ + "[1;33;41m" : _     'Yellow/Red        ' DD061303/COLR
  1503.          ZFGA$ = ZEscape$ + "[1;33;45m" : _     'Yellow/Magenta    ' DD061303/COLR
  1504.          ZFGB$ = ZEscape$ + "[1;37;44m" : _     'White/Blue        ' DD061303/COLR
  1505.          ZFGC$ = ZEscape$ + "[1;37;42m" : _     'White/Green       ' DD061303/COLR
  1506.          ZFGD$ = ZEscape$ + "[1;37;41m" : _     'White/Red         ' DD061303/COLR
  1507.          ZFGE$ = ZEscape$ + "[1;37;45m" : _     'White/Magenta     ' DD061303/COLR
  1508.          ZFGF$ = ZEscape$ + "[1;36;44m"         'Brt Cyan/Blue     ' DD061303/COLR
  1509. * REPLACING old line(s) by new
  1510. 59970 CALL QuickTPut (ZEmphasizeOff$,0)
  1511. * ------[ first line different ]------
  1512.        Call GetRBBSString(142,RBBSString$)      'Pe 01/16/93
  1513.        OutTxt$ = RBBSString$                 'Pe 01/16/93
  1514.       ZOutTxt$ = OutTxt$ + ZPressEnterExpert$
  1515.       GOSUB 59973
  1516.       IF ZWasQ = 0 THEN _
  1517.          ZEmphasizeOff$ = ZEscape$ + "[" + ZBoldText$ + _
  1518.              ";40;" + MID$(STR$(ZUserTextColor),2) + "m" : _
  1519.          EXIT SUB
  1520.       CALL AllCaps (ZUserIn$)
  1521.       WasX = INSTR("RGYBPCW",ZUserIn$)
  1522.       IF WasX = 0 THEN _
  1523.          GOTO 59970
  1524.       ZUserTextColor = 30 + WasX
  1525.       ZOutTxt$ = "Make text Bright (Y,[N])"
  1526.       GOSUB 59973
  1527.       ZBoldText$ = CHR$(48 - ZYes)
  1528.       ZEmphasizeOff$ = ZEscape$ + "[" + ZBoldText$ + ";40;" + MID$(STR$(ZUserTextColor),2) + "m"
  1529.       GOTO 59970
  1530. * REPLACING old line(s) by new
  1531. * ------[ first line different ]------
  1532. 59973 ZSubParm = 1
  1533.       ZTurboKey = -ZTurboKeyUser
  1534.       CALL TGet
  1535.       IF ZSubParm = -1 THEN _
  1536.          EXIT SUB
  1537.       RETURN
  1538.       END SUB
  1539. * REPLACING old line(s) by new
  1540. 59980 ' $SUBTITLE: 'SetGraphic - Sets user graphic preference'
  1541. ' $PAGE
  1542. '
  1543. '  NAME    --  SetGraphic
  1544. '
  1545. '  INPUTS  --  PARAMETER                   MEANING
  1546. '              GraphicsNumber        0=None, 1=Ascii, 2=color
  1547. '
  1548. '  OUTPUTS --  ZWasGR                Shared var - set to
  1549. '                                    graphics.number
  1550. '              ZUserGraphicDefault$ What add to file name to
  1551. '                                    see if got graphics file ver
  1552. '
  1553. '  PURPOSE --  Sets file graphics preference
  1554. '
  1555.       SUB SetGraphic (GraphicsNumber) STATIC
  1556.       ZWasGR = GraphicsNumber
  1557.       IF ZWasGR = 2 THEN _
  1558.          ZDR1$ = ZFG1Def$ : _
  1559.          ZDR2$ = ZFG2Def$ : _
  1560.          ZDR3$ = ZFG3Def$ : _
  1561. * ------[ first line different ]------
  1562.          ZDR4$ = ZFG4Def$ : _                                        ' DD061303/COLR
  1563.          ZDR5$ = ZFG5$ : _                                           ' DD061303/COLR
  1564.          ZDR6$ = ZFG6$ : _                                           ' DD061303/COLR
  1565.          ZDR7$ = ZFG7$ : _                                           ' DD061303/COLR
  1566.          ZDR8$ = ZFG8$ : _                                           ' DD061303/COLR
  1567.          ZDR9$ = ZFG9$ : _                                           ' DD061303/COLR
  1568.          ZDRA$ = ZFGA$ : _                                           ' DD061303/COLR
  1569.          ZDRB$ = ZFGB$ : _                                           ' DD061303/COLR
  1570.          ZDRC$ = ZFGC$ : _                                           ' DD061303/COLR
  1571.          ZDRD$ = ZFGD$ : _                                           ' DD061303/COLR
  1572.          ZDRE$ = ZFGE$ : _                                           ' DD061303/COLR
  1573.          ZDRF$ = ZFGF$ _                                             ' DD061303/COLR
  1574.       ELSE ZDR1$ = "" : _
  1575.            ZDR2$ = "" : _
  1576.            ZDR3$ = "" : _
  1577.            ZDR4$ = "" : _                                            ' DD061303/COLR
  1578.            ZDR5$ = "" : _                                            ' DD061303/COLR
  1579.            ZDR6$ = "" : _                                            ' DD061303/COLR
  1580.            ZDR7$ = "" : _                                            ' DD061303/COLR
  1581.            ZDR8$ = "" : _                                            ' DD061303/COLR
  1582.            ZDR9$ = "" : _                                            ' DD061303/COLR
  1583.            ZDRA$ = "" : _                                            ' DD061303/COLR
  1584.            ZDRB$ = "" : _                                            ' DD061303/COLR
  1585.            ZDRC$ = "" : _                                            ' DD061303/COLR
  1586.            ZDRD$ = "" : _                                            ' DD061303/COLR
  1587.            ZDRE$ = "" : _                                            ' DD061303/COLR
  1588.            ZDRF$ = ""                                                ' DD061303/COLR
  1589.       ZUserGraphicDefault$ = MID$(" GC",ZWasGR+1, - (ZWasGR > 0))
  1590.       END SUB
  1591. * REPLACING old line(s) by new
  1592. 60130 ' $SUBTITLE: 'MetaGSR -- Meta Global search and replace'
  1593. ' $PAGE
  1594. '
  1595. '  NAME    --  MetaGSR
  1596. '
  1597. '  INPUTS  --  PARAMETER               MEANING
  1598. '              Strng$              String to edit
  1599. '
  1600. '  OUTPUTS --  Strng$              Edited string
  1601. '
  1602. '  PURPOSE --  Global search and replace for meta variables
  1603. '
  1604. * ------[ first line different ]------
  1605. ' DSZ port [PORT#] speed [BAUD] estimate 0 [CBAUD] ha on sz -r [FILE]
  1606. '
  1607. ' RBBS will substitute the variable [CBAUD] with the actual modem speed.
  1608. '
  1609.       SUB MetaGSR (Strng$,OverStrike) STATIC
  1610.       WasY = 1
  1611. * REPLACING old line(s) by new
  1612. 60135 MetaVal$ = MID$(Strng$,WasX+1,WasY-WasX-1)
  1613. * ------[ first line different ]------
  1614.       WasI = INSTR("      BAUD  CBAUD PORT  PORT# PARITYPROTO NODE  FILE  ",MetaVal$) ' KG122301
  1615.       IF WasI = 0 OR LEN(MetaVal$) < 4 THEN _
  1616.          WasY = WasX + 1 : _
  1617.          GOTO 60131
  1618.       WasJ = (WasI-1)\6 + 1
  1619.       WasK = (WasI+4)\6 + 1
  1620.       IF WasK > WasJ THEN _
  1621.          EXIT SUB
  1622.       ON WasJ GOTO 60155, _
  1623.                 60137, _
  1624.                 60138, _
  1625.                 60139, _
  1626.                 60141, _
  1627.                 60143, _
  1628.                 60145, _
  1629.                 60147, _
  1630.                 60149, _
  1631.                 60151
  1632. * REPLACING old line(s) by new
  1633. * ------[ first line different ]------
  1634. 60149 IF ZWasBatchTransfer THEN _              'Pe BatchUp Mod
  1635.  CALL BreakFileName (ZFileName$,Drive$,Prefix$,Ext$,ZFalse) : _
  1636.        WorkHold$ = Drive$+"\" _    'Pe 12/30/92
  1637.      ELSE _
  1638.        IF ZBatchTransfer THEN _ 
  1639.          WorkHold$ = "@" + ZNodeWorkFile$ _
  1640.       ELSE WorkHold$ = ZFileName$
  1641.       GOTO 60151
  1642. * REPLACING old line(s) by new
  1643. 60180 ' $SUBTITLE: 'TimeLock - Test TIME LOCK for premium features'
  1644. ' $PAGE
  1645. '
  1646. '  NAME    --  TimeLock  (written by Doug Azzarito)
  1647. '
  1648. '  INPUTS  --  PARAMETER                   MEANING
  1649. '              ZTimeLockSet               SECONDS/SESSION TO LOCK
  1650. '
  1651. '  OUTPUTS --  ZSubParm     -1 if feature is LOCKED
  1652. '
  1653. '  PURPOSE -- Check elapsed time for lock duration
  1654. '
  1655.       SUB TimeLock STATIC
  1656.       CALL TimeRemain(MinsRemaining)
  1657.       IF ZSecsUsedSession! >= ZTimeLockSet THEN _
  1658.          ZOK = ZTrue : _
  1659.          EXIT SUB
  1660.       ZOutTxt$ = ZFirstName$
  1661.       CALL NameCaps(ZOutTxt$)
  1662.       CALL QuickTPut1 ("Sorry, " + ZOutTxt$ + ", function locked" + _
  1663. * ------[ first line different ]------
  1664.                    STR$(INT((ZTimeLockSet-ZSecsUsedSession!)/60)) + _
  1665.                    " more minutes" + _
  1666.                    STR$(INT(ZTimeLockSet-ZSecsUsedSession!) MOD 60) + " seconds")
  1667.       CALL BufFile(ZHelpPath$+"TIMELOCK"+ZHelpExtension$,WasX)
  1668.       ZOK = ZFalse
  1669.       ZLastIndex = 0
  1670.       END SUB
  1671. * REPLACING old line(s) by new
  1672. 60200 ' $SUBTITLE: 'MarkTime - Give feedback for lengthy processes'
  1673. ' $PAGE
  1674. '
  1675. '  NAME    --  MarkTime
  1676. '
  1677. '  INPUTS  --  PARAMETER                   MEANING
  1678. '              DotNumber          How many dots printed
  1679. '
  1680. '  OUTPUTS --  DotNumber
  1681. '
  1682. '  PURPOSE --  Marks time by putting colorized dots out
  1683. '              to 4, then erasing
  1684. '
  1685.       SUB MarkTime (DotNumber) STATIC
  1686.       TimeNow! = TIMER
  1687. * ------[ first line different ]------
  1688.       IF TimeNow! - PrevTI! < 0.60 THEN _                            ' DD090901
  1689.          EXIT SUB
  1690.       PrevTI! = TimeNow!
  1691.       IF RemoveDot AND DotNumber > 0 THEN _
  1692.          CALL QuickTPut (ZBackSpace$,0) : _
  1693.          DotNumber = DotNumber - 1 : _
  1694.          EXIT SUB
  1695.       DotNumber = DotNumber + 1
  1696.       ON DotNumber GOTO 60201,60202,60203,60204
  1697. * REPLACING old line(s) by new
  1698. 60300 ' $SUBTITLE: 'AutoPage - NOTIFIES ZSysop WHEN SPECIFIC USER CALLS'
  1699. ' $PAGE
  1700. '
  1701. '  NAME    --  AutoPage   'Contributed  by Gregg and Bob Snyder
  1702. '                        'and RoseMarie Siddiqui
  1703. '
  1704. '  INPUTS  --  ZAutoPageDef$  List of conditions that trigger
  1705. '                                       notification and how
  1706. '
  1707. '  OUTPUTS -- NONE
  1708. '
  1709. '  PURPOSE -- Search ZAutoPageDef$ for match on whether
  1710. '             on name, security level, whether new user.
  1711. '             Also controls whether caller notified and
  1712. '             number of times sysop has bell rung.
  1713. '             And what tune to play (if any).
  1714. '
  1715.       SUB AutoPage STATIC
  1716.       CALL FindIt (ZAutoPageDef$)
  1717.       IF NOT ZOK THEN _
  1718.          EXIT SUB
  1719.       ZErrCode = 0
  1720.       ZOK = ZFalse
  1721.       WHILE NOT EOF(2) AND ZOK = ZFalse AND ZErrCode = 0
  1722.          CALL ReadParms (ZWorkAra$(),4,1)
  1723.          IF ZErrCode = 0 THEN _
  1724.             ZOK = (ZWorkAra$(1) = ZActiveUserName$) : _
  1725.             IF NOT ZOK THEN _
  1726.                IF ZNewUser AND ZWorkAra$(1) = "NEWUSER" THEN _
  1727.                   ZOK = ZTrue _
  1728.                ELSE IF LEFT$(ZWorkAra$(1),1) = "/" AND LEN(ZWorkAra$(1)) > 2 THEN _
  1729.                        ZWasB = INSTR (2,ZWorkAra$(1),"/") : _
  1730.                        IF ZWasB > 0 AND LEN(ZWorkAra$(1)) > ZWasB THEN _
  1731.                           IF ZUserSecLevel <= VAL(MID$(ZWorkAra$(1),ZWasB+1)) AND _
  1732.                              ZUserSecLevel >= VAL(MID$(ZWorkAra$(1),2)) THEN _
  1733.                                 ZOK = ZTrue
  1734.       WEND
  1735.       CLOSE 2
  1736.       IF ZErrCode > 0 OR NOT ZOK THEN _
  1737.          ZErrCode = 0 : _
  1738.          EXIT SUB
  1739.       ZPageStatus$ = "AP!"
  1740.       IF LEFT$(ZWorkAra$(2),1) = "N" THEN _
  1741.          ZOutTxt$ = "Telling sysop you're on..." : _
  1742.          CALL RingCaller
  1743.       ZWasB = (ZWorkAra$(4) = "")
  1744.       ZWorkAra$(5) = ""
  1745.      TempSnoop = ZSnoop
  1746.      ZSnoop = ZTrue
  1747.      CALL Line25
  1748.       FOR WasI = 1 TO VAL(ZWorkAra$(3))
  1749.          IF ZWasB THEN _
  1750.             CALL LPrnt (ZBellRinger$,0) : _
  1751.          ELSE ZWorkAra$(5) = ZWorkAra$(5) + "O4 X" + VARPTR$(ZWorkAra$(4))
  1752.       NEXT
  1753. * ------[ first line different ]------
  1754.       ZSnoop = TempSnoop
  1755.       END SUB
  1756. * REPLACING old line(s) by new
  1757. 62540 ' $SUBTITLE: 'RptTime -- Reports time on system'
  1758. ' $PAGE
  1759. '
  1760. '  NAME    --  RptTime
  1761. '
  1762. '  INPUTS  --  PARAMETER                   MEANING
  1763. '
  1764. '  OUTPUTS --
  1765. '
  1766. '  PURPOSE --  Tells user time used on system
  1767. '
  1768.       SUB RptTime STATIC
  1769.       CALL SkipLine (1)
  1770.       CALL GetTime
  1771.       CALL AMorPM
  1772.       Mins = (ZSessionHour * 60) + ZSessionMin
  1773.       CALL Carrier
  1774.       IF ZSubParm = -1 THEN _
  1775.          EXIT SUB
  1776.       CALL QuickTPut1 ("Now: " + DATE$ + " at " + TIME$)
  1777.       CALL QuickTPut1 ("On for" + STR$(Mins) + " mins," + _
  1778.                         STR$(ZSessionSec) + " secs")
  1779. * ------[ first line different ]------
  1780.       END SUB
  1781. * REPLACING old line(s) by new
  1782. 62605 IF LEFT$(ZTransferOption$,1) = "," THEN _
  1783.          ZTransferOption$ = MID$(ZTransferOption$,2)
  1784.       IF INSTR(ZDefaultXfer$,ZUserXferDefault$) = 0 THEN _
  1785. * ------[ first line different ]------
  1786.        Call GetRBBSString(143,RBBSString$) : _      'Pe 01/16/93
  1787.        OutTxt$ = RBBSString$ : _                 'Pe 01/16/93
  1788.          CALL QuickTPut1 ("Protocol "+ZUserXferDefault$+OutTxt$) : _
  1789.          ZUserXferDefault$ = MID$(ZDefaultXfer$,INSTR(ZInternalEquiv$,"N"),1)
  1790.       END SUB
  1791. * REPLACING old line(s) by new
  1792. 62620 ' $SUBTITLE: 'Transfer - Subroutine for external protocols'
  1793. ' $PAGE
  1794. '
  1795. '  NAME    -- Transfer
  1796. '
  1797. '  INPUTS  --     PARAMETER                    MEANING
  1798. '              ZTransferFunction         = 1 DOWNLOAD FILE TO USER
  1799. '                                        = 2 UPLOAD FILE TO RBBS-PC
  1800. '              ZFileName$                NAME OF FILE FOR Transfer
  1801. '              ZComPort$                 NAME OF COMMUNICATIONS PORT
  1802. '                                        TO BE USED BY KERMIT (COM1
  1803. '                                        OR COM2)
  1804. '              ZBPS                      = -1 FOR   300 BAUD
  1805. '                                        = -2 FOR   450 BAUD
  1806. '                                        = -3 FOR  1200 BAUD
  1807. '                                        = -4 FOR  2400 BAUD
  1808. '                                        = -5 FOR  4800 BAUD
  1809. '                                        = -6 FOR  9600 BAUD
  1810. * ------[ first line different ]------
  1811. '                                        = -7 FOR 14400 BAUD
  1812. '                                        = -8 FOR 19200 BAUD
  1813. '
  1814. '  OUTPUTS  -- NONE
  1815. '
  1816. '  PURPOSE -- To transfer files using external protocols
  1817. '
  1818.       SUB Transfer STATIC
  1819. IF ZUpBatchTransfer Then _
  1820.    Exit Sub
  1821.       IF ZPrivateDoor THEN _
  1822.          CALL PrivDoorRtn : _
  1823.          EXIT SUB
  1824.       IF ZTransferFunction = 1 THEN _
  1825.          ZUserIn$ = ZDownTemplate$ : _
  1826.          ZWasZ$ = "send " _
  1827.       ELSE IF ZTransferFunction = 2 THEN _
  1828.               ZUserIn$ = ZUpTemplate$ : _
  1829.               ZWasZ$ = "receive "
  1830.       CALL MetaGSR (ZUserIn$,ZFalse)
  1831.       CALL QuickTPut1 ("Protocol     : "+ZProtoPrompt$)
  1832.       CALL QuickTPut ("Ready to " + ZWasZ$ + " ",0)
  1833. '
  1834.       IF ZBatchTransfer or ZWasBatchTransfer THEN _        'Pe BatchUp mod
  1835.          CALL QuickTPut1 ("(BATCH)")  _
  1836.       ELSE CALL QuickTPut1 (ZFileNameHold$)
  1837. '
  1838.    IF ZWasBatchTransfer THEN _                             'Pe BatchUp mod
  1839.         Temp$ = ZBatchWorkFile$ _
  1840.           ELSE IF ZBatchTransfer Then _
  1841.         Temp$ = ZNodeWorkFile$  
  1842.    IF ZBatchTransfer or ZWasBatchTransfer THEN _        'Pe BatchUp mod
  1843.        CALL OpenWork (2,Temp$) : _
  1844.           WHILE NOT EOF(2) : _
  1845.             CALL ReadAny : _
  1846.            CALL BreakFileName (ZOutTxt$,ZWasZ$,ZWasY$,WasX$,ZTrue) : _
  1847.          CALL QuickTPut1 ("   "+ZWasY$+WasX$) : _
  1848.      WEND
  1849. '
  1850.       IF ZAutoEnd = 1 THEN _                  'Pe 03/30/92
  1851.        Call GetRBBSString(69,RBBSString$) : _      'Pe 01/16/93
  1852.        OutTxt$ = RBBSString$ : _                 'Pe 01/16/93
  1853.          CALL QuickTPut1 (OutTxt$)
  1854.       CALL PrivDoorRtn
  1855.       END SUB
  1856. * REPLACING old line(s) by new
  1857. 62628 WasX$ = LEFT$(ZUserIn$,INSTR(ZUserIn$+" "," ")-1)
  1858.       IF WasX$ = "" THEN _
  1859.          EXIT SUB
  1860.       CALL FindIt (WasX$)
  1861.       IF NOT ZOK THEN _
  1862.          ZOutTxt$ = "Missing door program" : _
  1863.          CALL UpdtCalr (ZOutTxt$ + " " + WasX$,1) : _
  1864.          ZSnoop = ZTrue : _
  1865.          CALL LPrnt (ZOutTxt$,1) : _
  1866.          EXIT SUB
  1867.       ZOutTxt$(1) = "CLS"
  1868.       GOSUB 62633
  1869. * ------[ first line different ]------
  1870.       ZOutTxt$(2) = "ECHO " + ZOutTxt$
  1871.       ZOutTxt$(3) = ZDiskForDos$ + _
  1872.               "COMMAND /C " + _
  1873.               ZUserIn$
  1874.       ZOutTxt$(4) = ZRBBSBat$
  1875.       ZPrivateDoor = ZTrue
  1876.       Call GetRBBSString(144,RBBSString$)      'Pe 01/16/93
  1877.       OutTxt$ = RBBSString$                 'Pe 01/16/93
  1878.       CALL QuickTPut1 (OutTxt$)
  1879.       LOCATE 25,1
  1880.       CALL LPrnt(ZLineFeed$,0)
  1881.       CALL DoorInfo
  1882.       CALL RBBSExit (ZOutTxt$(),4)
  1883. * REPLACING old line(s) by new
  1884. 62629 GOSUB 62633
  1885. * ------[ first line different ]------
  1886.       'CLS
  1887.       CALL LPrnt (ZOutTxt$,1)
  1888.       CALL ShellExit (ZUserIn$)
  1889. * REPLACING old line(s) by new
  1890. 62630 IF ZPrivateDoor THEN _
  1891.          CALL RestoreCom : _
  1892.          CALL DelayTime (7 + ZBPS) : _
  1893.          CALL SetBaud : _
  1894. * ------[ first line different ]------
  1895.        Call GetRBBSString(145,RBBSString$) : _      'Pe 01/16/93
  1896.        OutTxt$ = RBBSString$ : _                 'Pe 01/16/93
  1897.          CALL QuickTPut1 (OutTxt$)
  1898. * REPLACING old line(s) by new
  1899. * ------[ first line different ]------
  1900. 62633 IF ZTransferFunction = 1 THEN _                 'Pe 06/19/92
  1901.       ZOutTxt$ = STR$(ZUserSecLevel) + _
  1902.          " " + _
  1903.          ZActiveUserName$ + _
  1904.          " " +  _ 
  1905.                  ZWasCI$ + ZCrlF$ : _
  1906.       ZOutTxt$ = ZOutTxt$ +  "ECHO Downloading " +STR$(ZBytesInFile#) + _     'Pe 10/11/91
  1907.        " bytes" + _                                'Pe 10/11/91
  1908.       " At "+  STR$(ZBaudTest!) + " Bps" + _
  1909.        " Time:" + _
  1910.      STR$(INT(ZBlocksInFile# / 60)) + _
  1911.      " min," + _
  1912.      STR$(INT(ZBlocksInFile# - (INT(ZBlocksInFile# / 60) * 60))) + _
  1913.      " sec (approx)"_                              'Pe 10/11/91
  1914.      Else ZOutTxt$ = "Uploading file"+ _               'Pe 06/19/92
  1915.           " At "+  STR$(ZBaudTest!) + " Bps"          'Pe 06/19/92
  1916.          RETURN
  1917.       END SUB
  1918. * REPLACING old line(s) by new
  1919. 62660 ' $SUBTITLE: 'SetExpert - subroutine to adjust for expert change'
  1920. ' $PAGE
  1921. '
  1922. '  NAME    --  SetExpert
  1923. '
  1924. '  INPUTS  --  PARAMETER                   MEANING
  1925. '              ZExpertUser          WHETHER IS AN EXPERT
  1926. '
  1927. '  OUTPUTS --  ZMorePrompt$         Pause prompt
  1928. '              ZPressEnter$         Prompt to press enter
  1929. '
  1930. '  PURPOSE --  Make more helpful prompt for novices and shorter
  1931. '              one for experts
  1932. '
  1933.       SUB SetExpert STATIC
  1934.       IF ZExpertUser THEN _
  1935. * ------[ first line different ]------
  1936.          ZMorePrompt$ = "More <[Y],N,A" : _
  1937.          ZPressEnter$ = ZPressEnterExpert$ : _
  1938.          EXIT SUB
  1939.       ZMorePrompt$ = "More [Y]es,N)o,A)bort"
  1940.       ZPressEnter$ = ZPressEnterNovice$
  1941.       END SUB
  1942. * REPLACING old line(s) by new
  1943. 62670 ZOutTxt$ = Prompt$
  1944. * ------[ first line different ]------
  1945.       ZHidden = ZTrue
  1946.       CALL PopCmdStack
  1947.       ZHidden = ZFalse
  1948.       IF ZSubParm < 0 OR ZWasQ = 0 THEN _
  1949.          EXIT SUB
  1950.       IF LEN(ZUserIn$) > 15 THEN _
  1951.        Call GetRBBSString(75,RBBSString$) : _      'Pe 01/16/93
  1952.        OutTxt$ = RBBSString$ : _                 'Pe 01/16/93
  1953.          CALL QuickTPut1 ("15" + OutTxt$) : _
  1954.          GOTO 62670
  1955.       IF INSTR(ZUserIn$,";") > 0 THEN _
  1956.        Call GetRBBSString(146,RBBSString$) : _      'Pe 01/16/93
  1957.        OutTxt$ = RBBSString$ : _                 'Pe 01/16/93
  1958.          CALL QuickTPut1 (OutTxt$) : _
  1959.          GOTO 62670
  1960.    IF NOT ZSYSOP Then                                     ' Pe 04/16/92
  1961.       IF INSTR(ZUserIn$," ") > 0 THEN _                'lk 022792
  1962.        Call GetRBBSString(147,RBBSString$) : _      'Pe 01/16/93
  1963.        OutTxt$ = RBBSString$ : _                 'Pe 01/16/93
  1964.          CALL QuickTPut1 (OutTxt$) : _ 
  1965.          GOTO 62670                                    'lk 022792
  1966.     End If                                                 'Pe 04/16/92
  1967.       IF DisallowSpaces THEN _
  1968.          IF ZUserIn$ = SPACE$(LEN(ZUserIn$)) THEN _
  1969.        Call GetRBBSString(148,RBBSString$) : _      'Pe 01/16/93
  1970.        OutTxt$ = RBBSString$ : _                 'Pe 01/16/93
  1971.             CALL QuickTPut1 (OutTxt$) : _
  1972.             GOTO 62670
  1973.       CALL AllCaps (ZUserIn$)
  1974.       ZWasZ$ = ZUserIn$
  1975.       END SUB
  1976. * REPLACING old line(s) by new
  1977. 64005 ZChatAvail = ZFalse
  1978.       QestChain = ZFalse
  1979.       LastQues = 0
  1980.       CALL Graphic (ZFileName$)
  1981.       IF NOT ZOK THEN _
  1982.          EXIT SUB
  1983.       CALL ReadParms (ZOutTxt$(),2,1)
  1984.       IF ZErrCode > 0 THEN _
  1985.          EXIT SUB
  1986.       PrevAppend$ = AppendFileName$
  1987.       AppendFileName$ = ZOutTxt$(1)
  1988.       MaxSecLevel = VAL(ZOutTxt$(2))
  1989.       WasX = INSTR(ZOutTxt$(2)," ")
  1990.       IF WasX > 0 THEN _
  1991.          IF ZUserSecLevel < VAL(MID$(ZOutTxt$(2),WasX)) THEN _
  1992. * ------[ first line different ]------
  1993.        Call GetRBBSString(149,RBBSString$) : _      'Pe 01/16/93
  1994.        OutTxt$ = RBBSString$ : _                 'Pe 01/16/93
  1995.             CALL QuickTPut1 (OutTxt$) : _
  1996.             EXIT SUB
  1997. '
  1998. '
  1999. ' *  THE First RECORD OF THE SCRIPT FILE CONTAINS THREE PARAMETERS:
  2000. ' *   1.  THE NAME OF THE FILE TO APPEND THE ANSWERS TO.
  2001. ' *   2.  THE MAXIMUM SECURITY LEVEL THE + COMMAND CAN RAISE A USER SECURITY
  2002. ' *   3.  THE MINIMUM SECURITY TO USE THIS QUESTIONNAIRE
  2003. ' * e.g. 'C:XXX.DAT,6 5' writes answers to C:XXX.DAT, can raise to 6,
  2004. ' *      and requires security 5 or more to access
  2005.       ScriptIndex = 1
  2006.       ZOutTxt$(ScriptIndex) = ZActiveUserName$ + _
  2007.                          " " + _
  2008.                          DATE$ + _
  2009.                          " " + _
  2010.                          TIME$
  2011. * REPLACING old line(s) by new
  2012. 64110 CALL Carrier
  2013.       IF ZSubParm = -1 THEN _
  2014.          GOTO 64510
  2015.       ScriptIndex = ScriptIndex + 1
  2016.       IF ScriptIndex > ScriptMax THEN _
  2017.          GOTO 64400
  2018.       ZOutTxt$ = MID$(ZOutTxt$(ScriptIndex),2)
  2019.       WasX = ZFalse
  2020.       IF LEFT$(ZOutTxt$,3) = "/FL" THEN _
  2021.          ZOutTxt$ = RIGHT$(ZOutTxt$,LEN(ZOutTxt$)-3) : _
  2022.          WasX = ZTrue
  2023.       CALL MetaGSR (ZOutTxt$,WasX)
  2024. * ------[ first line different ]------
  2025.       CALL SmartText (ZOutTxt$,ZFalse,WasX,ZFalse)   ' Pe 02/05/93
  2026.       WasX$ = ZOutTxt$
  2027.       ON INSTR(" :!@MT><*?=-+&",LEFT$(ZOutTxt$(ScriptIndex),1)) GOTO _
  2028.          64111, _       ' catch invalid lines
  2029.          64110, _       ' : label
  2030.          64110, _       ' ! stored answer
  2031.          64420, _       ' @ abort
  2032.          64120, _       ' M macro execute
  2033.          64430, _       ' T turbo key
  2034.          64440, _       ' > goto label
  2035.          64190, _       ' < assign value
  2036.          64450, _       ' * display line
  2037.          64113, _       ' ? prompt for answer
  2038.          64114, _       ' = conditional branch
  2039.          64460, _       ' - decrease security level
  2040.          64465, _       ' + increase security level
  2041.          64470          ' & chain
  2042. * REPLACING old line(s) by new
  2043. * ------[ first line different ]------
  2044. 64111 Call GetRBBSString(151,RBBSString$)       'Pe 01/16/93
  2045.       OutTxt$ = RBBSString$                  'Pe 01/16/93
  2046.       ZOutTxt$ = OutTxt$ + LEFT$(ZOutTxt$(ScriptIndex),1)
  2047.        Call GetRBBSString(152,RBBSString$)       'Pe 01/16/93
  2048.        OutTxt$ = RBBSString$                  'Pe 01/16/93
  2049.       ZOutTxt$ = ZOutTxt$ + OutTxt$
  2050.       ZSubParm = 5
  2051.       CALL TPut
  2052.       GOTO 64510
  2053. * REPLACING old line(s) by new
  2054. 64200 ScriptIndex = 1
  2055.       CALL MetaGSR (BranchLabel$,ZFalse)
  2056. * ------[ first line different ]------
  2057.       CALL SmartText (BranchLabel$,ZFalse,ZFalse,ZFalse)   'Pe 02/06/93
  2058.       CALL AllCaps (BranchLabel$)
  2059.       CALL Trim (BranchLabel$)
  2060. * REPLACING old line(s) by new
  2061. 64400 ScriptIndex = 0
  2062.       ZWasEN$ = AppendFileName$
  2063.       CALL LockAppend
  2064.       IF ZErrCode <> 0 THEN _
  2065. * ------[ first line different ]------
  2066.        Call GetRBBSString(153,RBBSString$) : _      'Pe 01/16/93
  2067.        OutTxt$ = RBBSString$ : _                 'Pe 01/16/93
  2068.          ZOutTxt$ = OutTxt$ : _
  2069.          ZSubParm = 5 : _
  2070.          CALL TPut : _
  2071.          GOTO 64500
  2072. * REPLACING old line(s) by new
  2073. 64410 ScriptIndex = ScriptIndex + 1
  2074.       IF ScriptIndex > ScriptMax THEN _
  2075.          GOTO 64500
  2076.       IF LEFT$(ZOutTxt$(ScriptIndex),1) = ":" THEN _
  2077.          QuestionSave$ = MID$(ZOutTxt$(ScriptIndex),2) : _
  2078.          GOTO 64410
  2079.       IF LEFT$(ZOutTxt$(ScriptIndex),1) = "!" AND _
  2080.          LEN(ZOutTxt$(ScriptIndex)) < 2 THEN _
  2081.          GOTO 64410
  2082.       IF LEFT$(ZOutTxt$(ScriptIndex),1) = "!" THEN _
  2083.          CALL PrintWorkA (QuestionSave$) : _
  2084.          CALL PrintWorkA (MID$(ZOutTxt$(ScriptIndex),2))
  2085.       IF ScriptIndex = 1 AND _
  2086.          AppendFileName$ <> PrevAppend$ THEN _
  2087.          CALL PrintWorkA (ZOutTxt$(ScriptIndex))
  2088.       IF ZErrCode <> 0 THEN _
  2089. * ------[ first line different ]------
  2090.        Call GetRBBSString(154,RBBSString$) : _      'Pe 01/16/93
  2091.        OutTxt$ = RBBSString$ : _                 'Pe 01/16/93
  2092.          ZOutTxt$ = OutTxt$ : _
  2093.          ZSubParm = 5 : _
  2094.          CALL TPut : _
  2095.          GOTO 64500
  2096.       GOTO 64410
  2097. * REPLACING old line(s) by new
  2098. 64510 ZChatAvail = (INSTR("MUF",ZActiveMenu$) > 0)
  2099.       ZOK = ZTrue
  2100.       ZLastIndex = 0
  2101.       END SUB
  2102. * ------[ first line different ]------
  2103. ' ViewArc Subroutine.... deleted
  2104. * DELETING old line(s)
  2105. 64600
  2106. 64605
  2107. 64610
  2108. 64620
  2109. 64630
  2110. * REPLACING old line(s) by new
  2111. 64636 IF ZAnsIndex < ZLastIndex THEN _
  2112.          GOTO 64638
  2113. * ------[ first line different ]------
  2114.        Call GetRBBSString(155,RBBSString$)      'Pe 01/16/93
  2115.       ZOutTxt$ = RBBSString$                 'Pe 01/16/93
  2116.     CALL TopPrompt
  2117.        Call GetRBBSString(156,RBBSString$)      'Pe 01/16/93
  2118.       ZOutTxt$ = RBBSString$                  'Pe 01/16/93
  2119.     Call TopPrompt
  2120.        Call GetRBBSString(157,RBBSString$)      'Pe 01/16/93
  2121.       ZOutTxt$ = RBBSString$                  'Pe 01/16/93
  2122.     CALL TopPrompt
  2123.        Call GetRBBSString(158,RBBSString$)      'Pe 01/16/93
  2124.        ZOutTxt$ = RBBSString$ + ZPressEnter$
  2125.     CALL ColorPrompt (ZOutTxt$)
  2126. * REPLACING old line(s) by new
  2127. 64638 ZStackC = ZTrue
  2128.       ZTurboKey = -ZTurboKeyUser
  2129.       CALL PopCmdStack
  2130.       IF ZWasQ=0 OR ZSubParm < 0 THEN _
  2131.          EXIT SUB
  2132.       ZWasZ$ = ZUserIn$(ZAnsIndex)
  2133.       CALL AllCaps (ZWasZ$)
  2134. * ------[ first line different ]------
  2135.       ZFF = INSTR("ABCFHLNTX!I",ZWasZ$)                           'RChat
  2136.       IF ZFF < 1 THEN _
  2137.          GOTO 64636
  2138.       CALL Toggle (ZFF)
  2139.       GOTO 64636
  2140.       END SUB
  2141.       SUB TopPrompt STATIC
  2142.       CALL ColorPrompt (ZOutTxt$)
  2143.       CALL QuickTPut1 (ZOutTxt$)
  2144.       END SUB
  2145. '
  2146. * REPLACING old line(s) by new
  2147. 64640 ' * SysOp function 5 - change xfer stats
  2148.       SUB CmndSysOpXfer STATIC
  2149. * ------[ first line different ]------
  2150.        Call GetRBBSString(150,RBBSString$)      'Pe 01/16/93
  2151.        OutTxt$ = RBBSString$
  2152.       CALL QuickTPut1 (OutTxt$)
  2153.       ZOutTxt$ = "Upload file total"
  2154.       GOSUB 64642
  2155.       IF LEN(ZUserIn$(1)) > 0 THEN _
  2156.          LSET ZUserUplds$ = MKI$(VAL(ZUserIn$(1)))
  2157.       ZOutTxt$ = "Upload byte total"
  2158.       GOSUB 64642
  2159.       IF LEN(ZUserIn$(1)) > 0 THEN _
  2160.          LSET ZULBytes$ = MKS$(VAL(ZUserIn$(1)))
  2161.       ZOutTxt$ = "Download file total"
  2162.       GOSUB 64642
  2163.       IF LEN(ZUserIn$(1)) > 0 THEN _
  2164.          LSET ZUserDnlds$ = MKI$(VAL(ZUserIn$(1)))
  2165.       ZOutTxt$ = "Download byte total"
  2166.       GOSUB 64642
  2167.       IF LEN(ZUserIn$(1)) > 0 THEN _
  2168.          LSET ZDlBytes$ = MKS$(VAL(ZUserIn$(1)))
  2169.       ZOutTxt$ = "Files downloaded TODAY"
  2170.       GOSUB 64642
  2171.       IF LEN(ZUserIn$(1)) > 0 THEN _
  2172.          LSET ZTodayDl$ = MKS$(VAL(ZUserIn$(1)))
  2173.       ZOutTxt$ = "Bytes downloaded TODAY"
  2174.       GOSUB 64642
  2175.       IF LEN(ZUserIn$(1)) > 0 THEN _
  2176.          LSET ZTodayBytes$ = MKS$(VAL(ZUserIn$(1)))
  2177.       EXIT SUB
  2178.